Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] ACL z bazy danych
wixer
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 5.03.2008

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


Witam,
Jestem początkujący jeśli chodzi o Zend Framework. Chciałbym pobierać uprawnienia do danej strony ( np. http://localhost/content/view/Hello-world z bazy danych podczas jej ładowania,
i załóżmy: użytkownik jest zalogowany, wchodzi na ową stronę oraz posiada uprawnienia oglądania - wyświetla mu się strona.

Uprawnienia byłby zapisane w bazie danych ( każdy artykuł ma inne uprawnienia ) oraz ładowane przy odpalaniu strony. Ustawianie wszystkich $this->allow(..., ...); dla każdego zasobu odpada - jest raczej nieefektywne przy dużej ilości uprawnień-stron.

pozdrawiam

Ten post edytował wixer 5.03.2008, 19:36:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
eai
post
Post #2





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

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


Trzymając wszystko ładnie w tabelach mam łatwiejszą możliwość wyszukiwania pod różnymi kryteriami, łatwiej się tym zarządza, co jest trudne mając zserializowany obiekt ACL w pliku lub w bazie. Nie muszę za każdym razem serializować i deserializować chcąc dodać nowy zasób, lub przywilej grupie czy użytkownikowi. Poza tym po co mam pchać dane zwrócone z bazy do obiektu ACL jak ACL może sam sobie pobrać z bazy poprzez $acl->isAllowed('someUser', 'someResource'), używając Zendowskiego musiałbym wcześniej załadować to do obiektu. A po cholere się tak bawić?
Go to the top of the page
+Quote Post
MarcinTryka
post
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 31.03.2007

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


Cytat(eai @ 7.03.2008, 14:12:15 ) *
Trzymając wszystko ładnie w tabelach mam łatwiejszą możliwość wyszukiwania pod różnymi kryteriami, łatwiej się tym zarządza, co jest trudne mając zserializowany obiekt ACL w pliku lub w bazie. Nie muszę za każdym razem serializować i deserializować chcąc dodać nowy zasób,

Tu masz rację. Jeżeli chciałbyś wyswietlić liste osób mających dostęp do danego zasobu, to trzeba odserializowac pokolei, choć tak naprawdę wcale nie każdy uzytkownik z 80tys musi mieć swój acl. Ja tworzę grupy. W praktyce wychodzi kilka grup i jak trzeba coś takiego zrobić to jest to znacznie krótszy czas. Ponadto wydajność przy tak rzadkich czynnościach jest sprawą drugorzędną najważniejsze aby dało się szybko i wygodnie sprawdzać czy dany user ma dostęp do danego zasobu.

Cytat(eai @ 7.03.2008, 14:12:15 ) *
lub przywilej grupie czy użytkownikowi. Poza tym po co mam pchać dane zwrócone z bazy do obiektu ACL jak ACL może sam sobie pobrać z bazy poprzez $acl->isAllowed('someUser', 'someResource'), używając Zendowskiego musiałbym wcześniej załadować to do obiektu. A po cholere się tak bawić?


Przytoczono tu dwa przyklady użycia:
1) [mój] Tworzę obiekt acl dla użytkownika/grupy i wrzucam zserializowany do bazy.
Odczytuję z bazy, odserializowuje i wrzucam do sesji. Wczytałem wszystkie zasoby dla jednego usera, ale mogę o nich zapomnieć. Tak samo jak o komunikowaniu się z bazą
2) cacheujemy wszystko, skrypt przy starcie odczytuje z pliku.
Twój sposób wcale tak bardzo wydajny być nie musi. Faktem jest że pobierasz z bazy tylko jedną konkretną informację, ale musisz pobierać ją przy kazdym wyświetleniu strony. Tzn. user wchodzi na stronę (z tych 40 kontrolerów każdy po 4 akcje, i 4 przywileje), przechodzi na drugą, trzecią, dwudziestą, wraca do czwartej itd...

Za każdym razem trzeba się połączyć z baza danych. I tak naprawdę choćby trzeba było wyciągnąć połowe przywilei, to i tak przy tylu połączeniach wyszukiwanie będzie trwało znacznie dłużej niż jesli wyciągnę jedno pole z całym acl-em usera lub grupy.

Wydaje mi się ponadto, ze jak się pomnoży to razy te 80 tyś użyszkodników to prędzej się będzie odczyt z bazy zapychał niż zabraknie ramu na przechowywanie acl-a w sesji. Z ciekawości jak znajdę chwilkę, to zserializuję taką zmienną (ACL, 40x4x4=320 przywileje) zapiszę do pliku i sprawdzę rozmiar, ile to zajmuję. stawiam, ze nie więcej niż 5 kilobajtów.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 04:15