![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Uprawnienia, to co neka mnie juz od dłuzszego czasu, nigdy jednak nie chciało mi sie przysiasc i co sklecic. Obecnie, gdy jednak stoje twarza w twarz z problemem, postanowiłem sie poradzic, a raczej spytac jak wy to rozwiazaliscie.
Zastanawiałem sie jak zaznaczyc usera, ktory ma miec przykladowo dostep do jednej podstrony danego serwisu. Strony takie bedzie mozna dodawac i usuwac bez ograniczen, wiec nie mozna tego nadawac uprawnien "na sztywno". Gdybym mial z gory ustalone 5 podstron, bez podstron "ruchomych" byloby latwiej. Moglbym stworzyc sobie tablice dla kazdego usera, zapisana w bazie np.
Oznaczałoby to, ze user ma dostep tylko do pierwszej podstrony. Niestety nie mam pomysłu rozwiazac tego dla nielimitowanej ilosci podstron. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 3 Dołączył: 29.07.2005 Skąd: Szczebrzeszyn Ostrzeżenie: (0%) ![]() ![]() |
sposób jeszcze nie testowany prze mnie, jednak może wypalić.
każdy typ user ma swoją wagę, np. 1 - zwykły, 2 - autor tekstów, 4 - admin i teraz dla dodawanej podstrony admin dodaje jakie uprawnienia są potrzebne do przeglądania (4,2 lub 1), gdy autor tekstów coś dodaje to uprawnienia ustawiane są na 2. zwykły użytkownik może tylko przeglądać. i teraz w zależności kto wchodzi na stronę porównujesz jego wagę z wagą strony, np wchodzi admin (4) na stronę o wadze 2: (4 >= 2) -> true, wchodzi user (1) na stronę o wadze 2 -> (1 >= 3) -> false. nie wiem czy to będzie wygodne w praktyce ale chętnie posłucham krytyki :] |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
hmmm, pomysl za bardzo "jednowymiarowy" przydatne w wypadku gdy strona to pojedyncze forum, jednak gdy mamy do czynienia z serwisem gdzie zintegrowanych jest kilka mechanizmow (forum, system newsow, artykuly) lepiej jest nadawac dla kazdej akcji (jawnej akcji: dodanie newsa, kasowanie artykulu itp) unikalny identyfikator, a w bazie danych o userze umiescic kolejne identyfikatory jego uprawnien np. dla komorki (DB) uprawnienia
Kod da ua dn un gdzie da - dodaj artykul, usun artykul, dodaj news, usun news... uprawnienia takie (tak przechowywane) w latwy sposob mozna wrzucic do tablicy za pomoca... sposob taki w idealnie nadaje sie do obiektowego programowania np.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Maski bitowe (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat(spenalzo @ 2006-03-31 06:21:14) Maski bitowe (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) czy chodzi Ci o flagi? jezeli nie, jest jakis temat o nich? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nie pamiętam jak sie to dokładnie nazywa - chodzi o zapisywanie uprawnień w formacie np. "11110001" itd itp
Na pewno było o tym na forum nie raz. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 402 Pomógł: 0 Dołączył: 20.01.2003 Ostrzeżenie: (0%) ![]() ![]() |
kiepski pomysl. tez kiedys tak robilem, ale teraz zmadrzalem ;]
struktura wygladalaby tak: uzytkownik [ id, imie ] grupa [ id, nazwa ] grupa_uprawnienia [ grupa_id, id_prawa, stan_prawa ] grupa_uzytkownik [ grupa_id, uzytkownik_id ] w ten sposob mozemy tworzyc grupy uprawnien i przypisywac do danych grup uzytkownikow. uprawnienia to zbior indywidualnych pozwolen do dokonania operacji (tak jak to radizl LBO). reguly (pamietaj ze user moze byc w kilku grupach jednoczesnie!): I. zakaz - bezwzglednie zakazane II. dozwolone - dozwolone, chyba ze zakazane III. brak okreslonego prawa - zabronione, chyba ze dozwolne mozemy tez dodac sobie pomocnicza tabele uprawnienia [ id, nazwa ] ktora przyda sie w panelu konfiguracyjnym ;] mozesz tez dodac tabele "uprawnienia efektywne" w ktorej bedziesz cachowal faktyczny stan upranwien dla konkretnych uzytkownikow (uzytkownik_id, prawo_id, stan_prawa) - bo po co joinowac w nieskonocznosc przy sprawdzaniu jednego uprawnienia? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 4 Dołączył: 22.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Może po prostu skorzystaj z phpGACL (http://rzseattle.piwko.pl/phpGACL.htm), ostatnio zaczynam się tym bawić i jestem zdumiony możliwościami.
Pozdrawiam |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Można ten problem rozwiązać tak:
Załóżmy, że dane przechowujesz w bazie i masz tabelę z podstronami i drugą tabelę użytkownikami. Każdej podstronie możesz przyporzadkować unikatowy ID, a następnie w tabeli z użytkownikami tworzysz pole odpowiedzialne za uprawnienia do wyświetlania podstron. W tym polu przechowywujesz informację o tym, do jakich podstron ma dostęp dany użytkownik - dane mogą mieć następującą postać: Kod 1;3;7 gdzie 1, 3 i 7 to ID podstron. Później robisz z tego odpowiednią tablicę i sprawdzasz, czy wybrany przez użytkownika ID podstrony zgadza się z jego uprawnieniami. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W takim wypadku lepiej zrobić nową tablicę:
id_strony | id_uprawn itd itp - bedzie to wygodniejsze i szybsze. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dziekuje za wypowiedzi. Daja mi one do myslenia, ale przynajmniej mam nad czym myslec a nie pustke w glowie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 13:11 |