![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Sam nie wiem czy podchodzi do pod ACL ale ogólnie nie czuje potrzeby wydzielania warstwy dostępu dlatego chciałbym w prosty sposób weryfikować czy zalogowany użytkownik może zobaczyć np. dany wpis w bazie.
Przypuszczając, że w sesji mam ID zalogowanego, a wpis w bazie ma kolumnę z właścicielem (twórcą). Aby utrudnić sprawę przyjmuje, że dostęp do wpisu ma też np. administrator. No i teraz pytanie jak to kontrolować? Kontroler? Praktycznie za każdym razem mam jakiś inny pomysł. Od strony modelu: Przykładowo gdy tworzę metodę "getWpis" dodaje dodatkowy parametr na ID z wartością domyślną NULL. Gdy wartość ta nie jest NULL dodaje do zapytania WHERE z weryfikacją autora. W przypadku gdy metoda jest użyta np. w panelu admina parametru nie przesyłam albo wysyłam NULL. Sposób jest w miarę ok choć zawsze mam obawy, że jakiś użytkownik wywoła metodę z parametrem NULL - przykładowo gdzieś zapomnę weryfikować czy użytkownik jest zalogowany tym samym brak ID zalogowanego. Robienie dodatkowej metody weryfikującej czy dany user ma dostęp do zasobu wydaje mi się czasochłonne. Nie zależy mi na wyświetlaniu wyjątku iż nie ma dostępu do danego wpisu tylko po prostu brak elementu (powyższy sposób spełnia te założenie). Jakieś porady? (korzystam z CI ale ten problem w sumie wraca dosyć często, nawet z strukturalnych aplikacjach). Ten post edytował markonix 21.10.2012, 15:04:07 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Jest to czasochłonne ze względu na to, że akurat w aktualnym projekcie jest wiele zbliżonych modeli (nie takich samych oczywiście) i do każdego potrzebowałbym takiej metody. Metoda ta byłaby dość podobna ale znów nie taka sama w każdym modelu stąd chce to jakoś unormować i uprościć.
Nie chce (tzn nie mam konieczności) informowania użytkownika o tym, że nie ma dostępu do danego zasobu. Przy metodzie "hasRight" mogę też oczywiście zwrócić ten sam widok (błąd), ale zawsze to jedno zapytanie więcej, a efekt ostateczny ten sam. Do tego +1 instrukcja warunkowa w kontrolerze. Poza tym przecież opisałem porównanie. Ta prostacka metoda z dodatkowym atrybutem sprowadza się do mniej niż jednej linijki "->where("id", $id)" (ActiveRecords) więc tak - uważam, że taki "lokalny" ACL jest czasochłonny, a w moim projekcie tworzenie tych metod zajmie więcej niż 2 minuty - czas na napisanie tematu (czasami nie umiem zrozumieć tych Twoich docinek (ogólnie), człowiek chce przedyskutować swoje przemyślenia to dostanie odpowiedź "po co lecisz z tym na forum".... oświeć mnie w takim razie do czego służy te forum?). Ten post edytował markonix 22.10.2012, 20:34:57 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 10:39 |