![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Rozważam wprowadzenie w swojej aplikacji systemu uprawnień. Mam kilkanaście tabel w których każdy rekord może mieć pola ID_pole1 ID_pole2 ID_pole3 itd... każdy użytkownik może mieć zupełnie inny zestaw rekordów. Myślałem nad tym aby jakoś tworzyć stringa doklejanego do KAŻDEGO zapytania w aplikacji w klauzuli WHERE, tylko pojawiają się problemy: - jak zarządzać z poziomu administratora takim "srtingiem" - czyli dodawać i odbierać uprawnienia - w jednej tabeli może np. brakować pola ID_pole2 i wówczas doklejając do tego zapytania "standardowy" string uzyskamy błąd - jak takie coś trzymać w bazie danych? Dzięki za podsunięcie pomysłu. -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
System uprawnień powinieneś rozwiązać na kilku poziomach. Ogólnie jest to temat dość obszerny, więc na początek radziłbym byś najlepiej poczytaj ciutkę o ACL, RBAC, DAC i MAC a powinno Ci się wyjaśnić co z czym jeść. Chodzi konkretnie o ustawianie użytkownikom roli, uprawnień grupowych, indywidualnych, do zasobu i tego, czy sami mogą własne reguły dostępu określać. Brzmi skomplikowanie, ale jest proste w zrozumieniu. Gorzej ciut z implementacją, ale jeśli ktoś przemyśli wszystko dobrze, to z reguły nie ma większych problemów.
Co do implementacji, to ona jest najtrudniejsza, ale wystarczy dobrze przemyśleć strukturę osobnej tabeli, która odpowiada wyłącznie za uprawnienia, a sprawa się dość upraszcza. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o uprawnienia do robienia czegoś z konkretnym elementem w jakiejś tabeli przechowującej pewne dane, swego czasu wymyśliłem tu coś takiego: mamy sobie pewną klasę, która potrafi operować elementami z tej tabeli. Zamiast narzucać jej sposób przechowywania tak, jak proponujesz, odwracamy wszystko w drugą stronę i mówimy: "trzymaj to sobie, jak chcesz, ale jeśli to ma się do czegoś przydać, to masz zaimplementować interfejs XYZ oraz pamiętać, że potrzebuję takich, a nie innych informacji". Innymi słowy, mówimy czego wymagamy od określonego typu zasobów i pozostawiamy osobie implementującej kod tej klasy na spełnienie naszych warunków. Kod systemu uprawnień będzie po prostu później odpytywać taki obiekt poprzez interfejs XYZ.
Od razu dodam, że koncepcji jeszcze nie testowałem w świecie rzeczywistym, ale jest to w moich planach. Ten post edytował Zyx 28.01.2011, 12:20:53 -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.07.2025 - 07:17 |