Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ACL i przechowywanie obiektu
Forum PHP.pl > Forum > PHP
ikssde
Ostatnio zmagam się z kontrolą uprawnień i przyszedł czas na przechowywanie owego obiektu, długo szukałem i intensywnie myślałem, ale w dalszym ciągu nie mogę dojść do jakiegoś sensowego rozwiązania, zaprezentuje kilka moich przemyśleń, jednocześnie mam nadzieje, że podzielicie się ze mną swoimi wdrożeniami systemu ACL.

1. Pobieranie zserializowanego obiektu z bazy danych przy każdym żądaniu, a następnie odserializowanie go,
2. Pobieranie zserializowanego obiektu z bazy danych i przechowanie odserializowanego w sesji,
3. Generowanie obiektu z danych pobranych z bazy danych (role, przywileje, zasoby) i przechowywanie go w sesji,
4. Generowanie obiektu z danych pobranych z bazy danych (role, przywileje, zasoby) przy każdym żądaniu,
5. Pobieranie z bazy danych uprawnień dla wywołanego zasobu (sprawdzamy czy zalogowany użytkownik ma dostęp do zasobu który wywołuje), czyli w zasadzie nie tworzymy żadnego obiektu, a tylko pobieramy dane z bazy przy każdym wywołaniu (pojawia się problem drzewka zasobów, czyli może być kilka zapytań do bazy danych, a nie tylko jedno),

6. Generowanie obiektu z danych pobranych z bazy danych (role, przywileje, zasoby) i przechowywanie go w cachu (nie za bardzo wiem jak miałoby to wyglądać).

W tym wszystkim najbardziej zastanawia mnie to czy baza danych poradzi sobie z taką ilością zapytań (przy dużym ruchu), oraz czy sesja jest w stanie pomieścić takie dane i czy jest to w ogóle bezpieczne. Jakie rozwiązanie zastosowaliście u siebie?
zend
Zainteresuj się Zend Acl, jeśli nie zakładasz możliwości zmiany uprawnień w trakcje trwania sesji uzytkownika zalogowanego to najlepiej będzie gdy uprawnienia pobierzesz w momencie logowania i zapiszesz je do sesji
Zend Auth - to też może się przydać
ikssde
Korzystam z Zend'owskich rozwiązań i tu nie widzę problemu, mam jedynie wątpliwości co do przechowywania obiektu.

Przy jakim ruchu stosowałeś takie rozwiązanie i jak dużo zajmowały dane sesji?
zend
Przedwczesna optymalizacja to duży błąd, o to ile to zajmnie miejsca na dysku możesz się zacząć martwić gdy postawisz to na komputerze z 5MB dyskiem smile.gif przy normalnych serwerach nie masz się o co martwić . Zserializowany bardzo duży obiekt może zajmować do kilku kb smile.gif Natomiast odwoływanie się do bazy i pytanie o przywilej za każdym razem jest znacznie wolniejszym rozwiązaniem
ikssde
Dzięki za pomoc, tak też mi się wydawało, że sesja będzie najlepszym wyjściem smile.gif

Jeśli ktoś ma jeszcze jakieś inne, ciekawsze, czy też optymalniejsze rozwiązania to bardzo proszę o podzielenie się nimi z nami.
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.