Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Dwa rodzaje autoryzacji na jednym portalu.
nizzre
post 20.07.2010, 18:46:21
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.06.2009

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


Mam taki problemik do rozwiązania i nie umiem wymyślić dobrego rozwiązania.

Buduję portal, gdzie część danych będzie widoczna po zalogowaniu.
Dodatkowo jak w każdy portal mam panel administracyjny.

Logowanie do panelu mam już zaprojektowane mniej więcej w ten sposób (sama autoryzacja użytkownika):

  1. $adapter = new Zend_Auth_Adapter_DbTable(
  2. Zend_Db_Table::getDefaultAdapter()
  3. );
  4. $adapter->setTableName('users');
  5. $adapter->setIdentityColumn('email');
  6. $adapter->setCredentialColumn('password');
  7. $adapter->setIdentity($values['email']);
  8. $adapter->setCredential(md5($values['password']));


Działa i nie mam tu pytań.

Część portalową dostępną po zalogowaniu chciałem udostępnić użytkownikom, którzy rejestrują się do innej tabeli w bazie danych: site_users

Wykonując autoryzację w ten sam sposób okazuje się że można mieć dostęp do części panela (gdy się ID pokryją z tych tabel), mimo że autoryzacja dotyczyła innych danych i innej tabeli w bazie.

Czy jest jakiś sposób aby dodać do autoryzacji jakiś identyfikator, po którym będzie można wychwycić którą metodą użytkownik się zalogował?

Pozdrawiam.

Go to the top of the page
+Quote Post
mazy
post 20.07.2010, 18:53:41
Post #2





Grupa: Zarejestrowani
Postów: 69
Pomógł: 4
Dołączył: 12.03.2003
Skąd: Suwałki

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


proponuje przechowywać użytkowników w jednej tabeli z jednym logowaniem przy użyciu Zend_Auth, natomiast do kontroli dostępu zastosować Zend_Alc tworząc stosowny plugin
Go to the top of the page
+Quote Post
nizzre
post 20.07.2010, 19:00:42
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.06.2009

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


W panelu wykorzystuję Zend_Acl, rozbudowałem nawet bardziej system uprawnień, ale ale właśnie zastanawiam się czy to bezpieczniejsza opcja niż dwie autoryzacje ( o ile da się to tak rozwiązać aby jedna nie przejmowała praw drugiej)?
Go to the top of the page
+Quote Post
mazy
post 21.07.2010, 08:28:00
Post #4





Grupa: Zarejestrowani
Postów: 69
Pomógł: 4
Dołączył: 12.03.2003
Skąd: Suwałki

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


moim zdaniem nie rozróżniasz autoryzacji od acla, autoryzacja służy do określenia tożsamości użytkownika a alc do określenia dostępu do określonych zasobów
Go to the top of the page
+Quote Post
zend
post 23.07.2010, 12:16:57
Post #5





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


W tabeli z użytkownikami zapisujesz też, do jakiej grupy dany użytkownik należy. I korzystasz z niej w acl. O co dokładnie Ci chodzi z nakładaniem się tych identyfikatorów?
Go to the top of the page
+Quote Post
VegetaSSJ
post 28.07.2010, 14:53:53
Post #6





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 21.10.2006

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


Twój problem polega na tym że Zend_Auth domyślnie używa do przechowywania danych sesji. Domyślnym strorage handlerem jest Zend_Auth_Storage_Session. Zend_Auth_Storage_Session używa domyślnej przestrzeni nazw NAMESPACE_DEFAULT = 'Zend_Auth', tak więc pomimo tego że używasz Zend_Auth w dwóch miejscach i z innymi danymi adaptera, to wyniki autoryzacji zapisywane i sprawdzane są w jednej przestrzeni nazw sesji.

W skrócie:

  1.  
  2. $auth = new Zend_Auth();
  3. $auth->setStorage(new Zend_Auth_Storage_Session('Nazwa_przestrzeni_nazw'));
  4. ...


API nie gryzie winksmiley.jpg http://zendframework.com/apidoc/1.10/
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: 27.06.2025 - 22:57