Logowanie

Witam, stworzyłem sobie mini stronkę która wymaga logowanie do wykonania jakiejkolwiek akcji. Dlatego chciałbym aby po wpisaniu adresu głównego od razu wyświetlił się formularz logowania. Podmieniłem w pliku konfig domyślny kontroler z site na user, w user ustawilem odpowiednią akcje na default i wszystko śmiga ok - jest tylko jeden mały makament - gdy zalogowany wywoła str. główną (ustawiona już domyślnie na logowanie) - str sie po prostu nie wyswietla

Witam serdecznie,

Musisz w pliku SiteController.php edytować funkcje actionLogin()




$this->redirect(Yii::app()->user->returnUrl)



wstawić to:


$this->redirect(array('/controller/views'));

To chyba najprostszy sposób. Pozdrawiam

Hm…? Działa. Ale jakby ktoś chciał się podzielić jakimś innym rozwiązaniem to byłoby super - sam jak na coś ciekawego wpadnę to się podzielę.

Sposób wysłany przez mnivo faktycznie jest najprostszy, ale też bardzo nieelastyczny. Myślę, że najlepiej rozwiązać ten problem tak jak radzą twórcy Yii :).

W kontrolerze zdefiniuj sobie listę dostępową, tak żeby dostęp do wszystkich akcji był tylko dla zalogowanych użytkowników. Następnie ustaw odpowiedni adres w tablicy loginUrl klasy CWebUser. Koniecznie cofnij zmiany z akcji login które zaproponował mnivo. Teraz przy próbie uruchomienia dowolnej akcji w kontrolerze ze zdefiniowaną listą dostępową yii sprawdzi, czy użytkownik jest zalogowany, jeżeli jest to przepuści dalej, jeżeli nie, to przekieruje na stronę logowania i po udanym logowaniu wróci do strony którą wybrał użytkownik (usunięte Yii::app()->user->returnUrl).

Zaleta tego rozwiązania polega na tym, że nie ma żadnego adresu wpisanego na sztywno. Dla mnie nie ma nic gorszego niż przeglądanie strony przez 10 minut, dojście do obszaru zabezpieczonego, logowania i powrót na stronę główną.

Adresy:

http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#access-control-filter

http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#handling-authorization-result

http://www.yiiframework.com/doc/api/1.1/CWebUser#loginUrl-detail