public function executeLogin(sfWebRequest $request) { $this->getUser()->clearCredentials(); $this->getUser()->setAuthenticated(false); if($request->isMethod('post')) { try { $login = $this->getRequestParameter('login'); $haslo = $this->getRequestParameter('haslo'); $c = new Criteria(); $c->add(UzytkownicyPeer::LOGIN, $login); $u = UzytkownicyPeer::doSelectOne($c); if($u) { $this->getUser()->setAuthenticated(true); $this->getUser()->addCredentials('uzytkownik'); $this->getUser()->setAttribute('numerek', $u->getUsid(), 'uzytkownik'); $this->getUser()->setAttribute('login', $u->getUsid(), 'uzytkownik'); return $this->redirect('main/logged'); } else { $this->getUser()->setAuthenticated(false); return $this->redirect('main/login'); } } catch(Exception $e) { $this->getUser()->setAuthenticated(false); $this->redirect('main/login'); } } $this->form = new LoginForm(); }
Poniżej przedstawiam szablon loggedSuccess.php
if ($sf_user->isAuthenticated()) { } else { }
Tutaj jeszcze zamieszcze jak wygląda $sf_user z poziomu loggedSuccess.php
myUser Object ( [lastRequest:protected] => 1249655633 [credentials:protected] => Array ( ) [authenticated:protected] => [timedout:protected] => [options:protected] => Array ( [auto_shutdown] => [culture] => [default_culture] => en [use_flash] => 1 [logging] => [timeout] => 1800 ) ............. ..... ..... .
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 ...
