Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [zendFramework] proste logowanie, prośba o naprowadzenie :D
eS...
post 14.01.2007, 02:01:06
Post #1





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

Ostrzeżenie: (0%)
-----


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

Ten post edytował eS... 14.01.2007, 02:07:46


--------------------
Go to the top of the page
+Quote Post
Sabistik
post 14.01.2007, 12:15:38
Post #2


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
eS...
post 14.01.2007, 14:00:11
Post #3





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

Ostrzeżenie: (0%)
-----


Heh no to mi pomogłeś :/. Pozatym ja nie chce gotowca więc chyba sie pospieszyłeś z przenoszeniem :/


--------------------
Go to the top of the page
+Quote Post
raikou
post 14.01.2007, 14:11:10
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 25.11.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował raikou 14.01.2007, 14:12:33


--------------------
Humans cannot create from nothingness, humans cannot accomplish anything without holding on to something, humans are not gods.

PLD Linux AC / Eclipse 3.2.1 / Firefox 2.0
Go to the top of the page
+Quote Post
Sabistik
post 14.01.2007, 19:43:51
Post #5


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
athabus
post 15.01.2007, 10:43:19
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
ARJ
post 15.01.2007, 10:54:29
Post #7





Grupa: Zarejestrowani
Postów: 453
Pomógł: 22
Dołączył: 20.09.2004
Skąd: Kraków - NH -

Ostrzeżenie: (0%)
-----


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.


--------------------
Warsztat: Windows 7 Pro 64bit | Apache 2.2 | PHP 5.2 | MySQL 5.0 | PHPmyadmin 2.6.4
Go to the top of the page
+Quote Post
athabus
post 15.01.2007, 11:12:58
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 09:26