Witam zaczynam od paru tygodni zabawe z Symfony i mam problem. Mianowicie jest metoda w kontrolerze executeLogin():
  1. public function executeLogin(sfWebRequest $request) {
  2.  
  3.  
  4. $this->getUser()->clearCredentials();
  5. $this->getUser()->setAuthenticated(false);
  6. if($request->isMethod('post'))
  7. {
  8. try
  9. {
  10. $login = $this->getRequestParameter('login');
  11. $haslo = $this->getRequestParameter('haslo');
  12.  
  13. $c = new Criteria();
  14. $c->add(UzytkownicyPeer::LOGIN, $login);
  15. $c->add(UzytkownicyPeer::HASLO, md5($haslo));
  16. $u = UzytkownicyPeer::doSelectOne($c);
  17.  
  18. if($u)
  19. {
  20. $this->getUser()->setAuthenticated(true);
  21. $this->getUser()->addCredentials('uzytkownik');
  22. $this->getUser()->setAttribute('numerek', $u->getUsid(),
  23. 'uzytkownik');
  24. $this->getUser()->setAttribute('login', $u->getUsid(),
  25. 'uzytkownik');
  26.  
  27. return $this->redirect('main/logged');
  28. } else
  29. {
  30. $this->getUser()->setAuthenticated(false);
  31. return $this->redirect('main/login');
  32. }
  33. } catch(Exception $e)
  34. {
  35. $this->getUser()->setAuthenticated(false);
  36. $this->redirect('main/login');
  37. }
  38. }
  39. $this->form = new LoginForm();
  40.  
  41. }


Poniżej przedstawiam szablon loggedSuccess.php

  1. print_r($sf_user);
  2.  
  3. if ($sf_user->isAuthenticated())
  4. {
  5. echo 'Zalogowany';
  6. } else
  7. {
  8. echo 'Brak dostępu';
  9. }

Tutaj jeszcze zamieszcze jak wygląda $sf_user z poziomu loggedSuccess.php

  1.  
  2. myUser Object
  3. (
  4. [lastRequest:protected] => 1249655633
  5. [credentials:protected] => Array
  6. (
  7. )
  8.  
  9. [authenticated:protected] =>
  10. [timedout:protected] =>
  11. [options:protected] => Array
  12. (
  13. [auto_shutdown] =>
  14. [culture] =>
  15. [default_culture] => en
  16. [use_flash] => 1
  17. [logging] =>
  18. [timeout] => 1800
  19. )
  20. .............
  21. .....
  22. .....
  23. .

Dlaczego w momencie return $this->redirect('main/logged'); w loggedSuccess.php nie ma juz Authenticated(true) tylko false?
Wygląda na to że cały czas atrybut authenticated w $sf_user jest czyszczony przy zmianie szablonu, bo o dziwo w momencie gdy sprawdziłem działanie na samym szablonie loginSuccess.php czyli tym gdzie kontroler ustala setAuthenticated(true) to wszystko działa. Gdzie jest błąd albo czego nie rozumiem? Proszę o pomoc.

Widzę, że małe zainteresowanie wzbudziłem... chyba sam rozwiązałem problem... użycie

$this->getContext()->getController()->redirect('main/login');

załatwia problem... przekierowanie jest razem ze zmiennymi środowiskowymi są one widoczne na stronie przekierowanej.
Nie wiem czy to rozwiązanie jest bez minusów ale działa dobrze ...smile.gif