![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam.
mam problem z Zend_Auth. Standardowo mam logowanie i autoryzacje umieszczona w pluginie, wszystko dziala ladnie, do czasu... W widoku mam link "dodaj artykuł". Chciałem zrobić tak, że jesli uzytkownik jest zalogowany to wyswietla link do formularza, a jesli nie to ten link zamienia sie w link do logowania. Napisalem sobie do tego helpera, ktory zwraca mi prawde jesli uzytkownik ma dostep do dodawania artykolu:
I po wywolaniu ostatniej linijki "isAllowed", dzieje się tak ze zwraca mi ze uzytkownik jest zalogowany i ma dostep do tego zasobu, jednak jak przechodze na nastepna strone, automatycznie zostaje wylogowany. Nie wiem co jest grane. W pluginie mam juz raz zastosowane isAllowed, wtedy jesli nie jest autoryzowany to przekierowywuje na glowna. Czy ma jakies znaczenie ze uzywam tego drugi raz ? Jak Wy rozwiazujecie ten problem ? Pozdrawiam Adrian |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Ja tam robię prosto, w kontrolerze:
W widoku:
Cytat jesli nie jest autoryzowany to przekierowywuje na glowna - to najlepiej jest zrobić w kontrolerze dodając metodę init (zostanie ona automatycznie wywołana razem z kontrolerem), tam należy ustalić, czy user ma dostęp do danego kontrola i wykonać odpowiednią akcję (np. przekierowanie) lub dodać do widoku zmienne, które nam ten widok spersonalizują.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No tak, to jest standardowe sprawdzenie, to mam zrobione w pluginie i dziala bardzo dobrze.
Jednak co zrobic jesli w danym kontrolerze chce sprawdzic czy uzytkownik ma dostep do innego kontrolera ? Poza tym nie wystarczy mi sama informacja czy jest zalogowany, potrzebne mi sa odpowiednie role, stad metoda isAllowed(). |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
No to daj na początku kontrolera:
Co do sprawdzania dostępu do innych kontrolerów to wygodnej i wydajnej metody raczej nie ma, akurat padła strona ZF i nie mogę zajrzeć do dokumentacji :/ |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hmmm nie rozumiem Twojej wypowiedzi Pilsener.
Nie mam Acl w modelu tylko w bootstrapie. Co mi da taki model ? Ten kod co napisalem sprawdza mi role w innym kontrolerze i akcji ( takiej jak podam w parametrach), niestety zaraz po sprawdzeniu ( sprawdza prawidlowo) wylogowywuje (usuwa sesje). Nie wiem dlaczego. Metode Acl "isAllowed()" wywoluje raz w pluginie (sprawdza on dostep do obecnego zasobu), i wlasnie ponowne wywolanie juz w widoku ( sprawda dostep do innego zasobu niz jestesmy) powoduje takie dziwne zachowanie. Eh zauwazylem teraz dziwna przypadlosc. Jedno odswiezenie uzytkownik jest zlogowany, drugie juz nie i tak co chwile :/ Nie wiecie co moze byc nie tak ? Logowanie i sesje mam na bazie danych. Update: Zauwazylem ze skrypt szaleje po dodaniu opcji Zend_Session_SaveHandler_DbTable. Zapisuje sesje w bazie za pierwszym razem prawidlowo, a po odswiezeniu od razu ja usuwa. Po wylaczeniu tego wszystko dziala prawidlowo. Wczesniej save handler tez dzialal prawidlowo. Nie wiecie co moze miec wplyw na zapis sesji w bazie danych ? Mial ktos podobny przypadek ? Pozdrawiam Adrian Ten post edytował quality 5.08.2010, 21:23:40 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Co mi da taki model ? - bo to są dane (role, zasoby, całe drzewo), a od danych są modele, ale możesz to robić w bootstrapie czy rejestrze, każdy niech robi jak mu wygodnie (IMG:style_emoticons/default/smile.gif) Możesz zresztą najprościej:
I teraz dodać rolę, zasób i potestować kilka wywołań isAllowed Dziwnie to wygląda u Ciebie z tymi sesjami :/ Może spróbuj wyczyścić dane z przeglądarek? I nie jestem pewien, czy zasób = kontroler a przywilej = akcja? Może tu jest problem? Cytat jesli uzytkownik ma dostep do dodawania artykolu - to może trzeba zdefiniować role i zasoby odpowiedzialne za moderacje/administrację artykułów? Nie korzystałem z isAllowed by sprawdzić, czy user ma dostęp do danego kontrolera/akcji, być może tu coś szwankuje, spróbuj dodać kilka zasobów i parę razy wywołać isAllowed, ciekawe co się stanie.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No to otoz tak.
Acl mam zbudowane w bootstrapie. Wlasnie na zasadzie new Acl i dodawanie rol i zasobow. U mnie zasob = modul_kontroller a przywilej = akcja. Teraz po terstowaniu skryptu widze ze ogolnie cala sesja zle dziala, i nie jest to wina powtorzenia isAllowed() tylko samej sesji. Otoz dziala to bardzo dziwnie. Mam dodanego session handlera na baze:
Po probie zalogowania w bazie pojawia mi sie takie cos zamiast zserializowanych danych: "Zend_Auth|N;" Nie wiem co jest grane. UPDATE: Hmmm bardzo dziwna sytuacja. Nie wiem czy ktos sie spotkal z takim czyms. Problem lezy w kodowaniu bazy danych. Cala baze mam kodowana w utf8_general_ci, aby nie bylo krzaczkow na stronie dodaje zapytanie na wstepie w bootstrapie:
To wlasnie powoduje szalenie sesji na bazie danych. Macie jakis pomysl jak to rozwiazac ? Usuniecie tych linijek powoduje wysypanie sie polskich znakow na stronie :/ Hmmm usunalem te zapytania z bootstrapa i wsadzilem bezposrednio w model ( w init()). Poki co dziala prawidlowo. Mimo wszystko problem bardzo dziwny. Czym bardziej wnikam w zenda i czym wiecej komponentow stosuje tym wiecej problemow wystepuje. Nastepny problem, oczywiscie kodowanie: Powlaczeniu cache (core), cachowana jest lista artykulow + paginacja = krzaczki polskich znakow :/ eh pozdrawiam Adrian Ten post edytował quality 6.08.2010, 21:14:19 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 00:00 |