Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [zendFramework] proste logowanie
Forum PHP.pl > Forum > PHP > Frameworki
eS...
Witam
Na początku mój kod http://forum.php.pl/index.php?showtopic=60104
Wszystko działa elegancko ale:
Jak/gdzie moge sobie wstawić kod ze sprawdzaniem sesji użytkownika (czy zalogowany czy nie). Nie mam pojęcia w którym miejscu w się to robi, czy w kontrolerze czy w modelu czy może w widoku?

Proszę o naprowadzenie gdzie mogę to ugryźć.
Szukałem w manualu zenda ale nic nie znalazłem (czyt. przykładu dla opornych)

Może mam sprawdzić sesje w indexAction? ta akcja jest wywoływana w moim przykładzie za każdym razem

  1. <?php
  2. function indexAction()
  3. {
  4.  //Rejestrujemy widok
  5.  $view=Zend::registry('view');
  6. $_SESSION['user']=0;// dal przykładu biggrin.gif
  7. if($_SESSION['user']==0){
  8.  $view->title = "error";
  9. echo $view->render('indexIndex.tpl.php');
  10.  }else{
  11.  $view->title = "My album";
  12. echo $view->render('indexIndex.tpl.php');
  13.  }
  14.  
  15. }
  16. ?>

To niby działa ale tylko na akcje index, i musiałbym wstawiać to w każdej akcji. Więc odpada, pozatym raczej marnie to wygląda
Sabistik
Cytat
Jak/gdzie moge sobie wstawić kod ze sprawdzaniem sesji użytkownika (czy zalogowany czy nie). Nie mam pojęcia w którym miejscu w się to robi, czy w kontrolerze czy w modelu czy może w widoku?

np. napisać odpowiedni plugin.

Przenoszę.
eS...
Heh no to mi pomogłeś :/. Pozatym ja nie chce gotowca więc chyba sie pospieszyłeś z przenoszeniem :/
raikou
Tak jak zostało powiedziane, użyj pluginu dla FrontController'a (na dobrą sprawę jest to implementacja wzorca Intercepting Filter).

Przykładowy plugin:

  1. <?php
  2. require_once 'Zend/Controller/Plugin/Abstract.php';
  3.  
  4. class My_Controller_Plugin_Authorization extends Zend_Controller_Plugin_Abstract
  5. {
  6. public function preDispatch($request)
  7. {
  8. // uwierzytelnienie
  9. // preDispatch z wiadomych względów
  10. }
  11. }
  12. ?>


a w głównym pliku strony:

  1. <?php
  2. $controller->registerPlugin(new My_Controller_Plugin_Authorization());
  3. ?>
Sabistik
Cytat
Heh no to mi pomogłeś :/. Pozatym ja nie chce gotowca więc chyba sie pospieszyłeś z przenoszeniem :/

A co ci miałem napisać? Sposób użycia? Przecież to wszystko jest w manualu i to na dodatek po polsku! Nie widze potrzeby (tak jak ~raikou) kopiowania go tutaj. Swoją drogą ten problem był już omawiany na naszym forum, wystarczy poszukać. Co do działu, jest on prawidłowy, ponieważ temat tyczy się frameworka, który jest gotowym skryptem.
athabus
Przyłączę się może do tematu. Otóż piszę w ZF stronę, która ma różne obszary dla różnych grup userów. Na razie zwykły user oraz admin, ale w przyszłości będzie to jeszcze bardziej rozbite na prawa. Pytanie czy jest sens używać w taki przypadku pluginów, czy lepiej sprawdzać wszystko w kontrolerze. Myślałem o zastosowania sprawdzenia usera w konstruktorze kontrolera lub w samej akcji.
Przy zastosowaniu pluginów musiałbym posiadać jakąś tablicę zaweirającą informacje o prawach wymaganych przez wszystkie kontrolery oraz akcje, ale może jest jakiś lepszy sposób.
ARJ
stworzyłem logowanie w ZF razem z uproszczonym systemem RBAC. więc tak:
- do logowania i wylogowania używam kontrolera odpowiedzialnego tylko za to
- do sprawdzania czy użytkownik jest zalogowany ( poprawny login i hasło) używam plugin`u
- plugin także używając ZF:ACL nadaje prawa dla systemu RBAC
- w każdej akcji sprawdzam czy dany użytkownik ma prawo do jej uruchomienia

jeżeli ktoś będzie chętny mogę udostępnić pliki tylko, że jak na razie są bez dokumentacji.
athabus
Ja chętnie zobaczę to rozwiązanie. Trochę boję się o ACL (w sensie użyywania go) bo jeszcze jest w inkubatorze. Ale za parę dni ma być kolejna wersja i ACL ma już być w Core.

Mail wyślę na priv
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.