![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Witam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jestem w trakcie pisania swojego coś w stylu frameworka. W większości aplikacji www często zachodzi potrzeba autoryzacja użytkowników na podstawie różnych parametrów. Zastanawiam się jak powinienem wyglądać uniwersalny moduł autoryzacja w takim systemie ? Tworzyć zawsze jedną stałą tabele np. users która ma wymagane pola: login, password, auth i relation. Jak wy to rozwiązujecie ? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 18 Dołączył: 6.03.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Model logowania mam zrobiony w prostu sposób:
Kod bool login($login, $password); Loguje użytkownika o podanym loginie i zwraca efekt operacji (wtedy można te dane również odpowiednio zapisać w sesji/ciasteczkach). Kod void logout(); Wiadomo. Kod bool isLogged(); Sprawdza, czy obiekt reprezentuje zalogowanego użytkownika. Kod bool hasAccess(AccessLevel $access); Sprawdza uprawnienia. Kod int getLoggedID(); ID zalogowanego użytkownika (rzuca wyjątkiem, gdy użytkownik nie jest zalogowany). A to, jak on jest reprezentowany w bazie danych, czy przez jedną, dwie, czy sto tabel, można łatwo zmienić w implementacji. Jeśli chodzi o mnie zazwyczaj stosuję users -> groups -> masks (AccessLevel to klasa trzymająca reguły dostępu, zazwyczaj po prostu lista wymaganych masek). Używałem tego schematu w przeróżnych przypadkach i sprawdza się. Zazwyczaj implementuje go w klasie użytkownika tak, że jest od razu reprezentowany przez użytkownika w bazie danych, ale w razie potrzeby nie ma przeszkód wyodrębnienia tego mechanizmu do osobnej klasy, jeśli nasz model przechowywania danych nie spina tych wszystkich danych i nie pokrywa się. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
spojrz jak jest zrobione to w zend framework: komponent zend_auth. tam wszystko ladnie jest rozplanowane (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 04:45 |