![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 0 Dołączył: 13.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
W mam tabele users, w niej pole userGroups. W polu tym przetrzymuje grupy np user,moderator,admin oddzielone przecinkiem. Chciałbym pobrać te dane z sesji do tablicy i sprawdzić czy użytkownik ma prawo dostępu do danej strony. Niestety takie rozwiązanie w połączeniu z sesją nie działa. Czy da się wstawić do tablicy dane z sesji w postaci takiej jak na poniższym przykładzie? Bo gdy wstawię $grupaUsera = array($_SESSION['userGroups']; i mam grupy oddzielone przecinkiem, traktuje to jako jeden wyraz, a nie 3. Trzeba użyć tu json, czy można to inaczej rozwiązać? Za pomoc z góry dzięki:)
Ten post edytował Darekxp 4.04.2012, 22:16:50 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
explode() z tego co mi się wydaje powinno nieco Ci pomóc.
Tak w ogóle to masz IMHO źle zrobione grupy uzytkowników... i całe uprawnienia... ![]() Nie tak się to powinno robić że dany ZASÓB jest dostępny dla danej GRUPY ale to dana GRUPA powinna mieć dostęp do danego ZASOBU... Zatem masz odwrotną relację. Przy grupie powinno być zapisane czy ma dostęp do danej strony przykładowo. Wtedy możesz zrobić uprawnienia i kolejne grupy nawet w oparciu o dziedziczenie uprawnień. Wtedy przy danym zasobie (na przykład zasobie o nazwie "a") nie sprawdzasz czy dany uzytkownik należy do grupy 1szej 2giej i 3ciej... tylko czy jego grupa (jedna - zawsze) ma uprawnienia do "a" ![]() Zapis uprawnień powinien być gdzies ładowany na początku - może być pobierany z bazy itd... Przykładowo: USER - dostęp do a, b, c ADMIN - dostęp do a, b, c, p sprawdzanie uprawnień powinno być zapisane w ten sposób przykładowo
-------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 0 Dołączył: 13.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc, explode(); pomogło.
Co do grup, moim zdaniem użytkownik powinien mieć prawo przynależenia do wielu grup, a nie tylko do jednej. Wtedy daje to lepszą możliwość ustalania uprawnień. Bo dany moduł, część ukryta strony powinna być dostępna dla wielu grup, jeśli zajdzie taka potrzeba, a nie tylko do jednej. W moim przykładzie definiuje na początku, które grupy mają dostęp do danego modułu, strony. A w Twoim przykładzie to danej grupie przypisuje się wszystkie strony, moduły, do których grupa ma dostęp. Myślę, że moje rozwiązanie jest lepsze i szybsze w definiowaniu dostępu do danej części strony. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ja się kłócić nie będę
![]() Cytat część ukryta strony powinna być dostępna dla wielu grup W moim przykładzie część ukryta strony jak najbardziej też może być dostępna dla wielu grup - wystarczy im dopisać każdej grupie dostęp do danej strony ![]() Cytat Myślę, że moje rozwiązanie jest lepsze i szybsze w definiowaniu dostępu do danej części strony. To załóżmy taki przykład Mamy 10 stron (nie tyle stron co modułów - na przykład newsy, panel admina, itd...) U mnie przy każdej ze stron piszę coś takiego na początki jedynie: Czyli pisze że jeśli dana strona nie jest zapisana w uprawnieniach grupy to wyrzucam tekst "ACCESS DENIED"; Tak samo jak Ty mam wszystkie uprawnienia spisane na początku. Teraz twój kod: Robię tak że sprawdzam czy w liście grup usera jest grupa, która jest wymagana aby mieć dostęp. I teraz - wyobraźmy sobie że dodaję nową grupę ![]() U mnie - dodaje tylko i wyłącznie nową grupę na początku skryptu i wpisuje w niej uprawnienie do żądanej strony. U Ciebie - dodajesz nową grupę, musisz odnaleźć daną stronę/moduł i w nim dodać uprawnienie że tak grupa też może oglądać zawartość. Wydaje mi się jednak że moja (a tak naprawdę wcale nie moja) metoda jest jednak lepsza i o wiele bardziej skalowalna ![]() Jeśli chciałbyś swoją metodę przerobić tak by wszystkie uprawnienia co do stron były zapisywane na początku tak jak u mnie dokładnie to tak jak masz u mnie:
(gdzie 1-9 to moduły/strony) to u Ciebie by to wyglądało tak:
Oczywiście też tak można - ale mi osobiście bardziej podoba się metoda gdzie do grupy jest przypisany moduł bop u Ciebie trzeba wymienić wszystkie możliwe moduły jakie są - a modułów naogół jest więcej od grup (w dużych aplikacjach ze skomplikowanymi uprawnieniami). -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 01:11 |