Jak napisał krokodilko w swoim komentarzu, zależy to od poziomu elastyczności, jakiego potrzebujesz.
Zaimplementowałem uprawnienia oparte na rolach dla jednego z moich klientów w następujący sposób:
- Użytkownik (identyfikator użytkownika (PK), nazwa użytkownika (unikalna), hasło (solone i zahaszowane! ), imię, nazwisko, telefon itp.
- Rola (identyfikator roli (PK), nazwa roli (unikalna), opis roli)
- Pozwolenie (identyfikator pozwolenia (PK), nazwa pozwolenia (unikalna)) - zakładki / ekrany / akcje trafiają tutaj
- Od użytkownika do roli (identyfikator użytkownika, identyfikator roli) – PK to obie kolumny połączone
- Role to Permission (identyfikator roli, identyfikator uprawnienia) - PK to obie kolumny połączone
Ale moim wymaganiem było być jak najbardziej elastycznym, a jest to system, który wciąż się rozwija (od 6 lat).
Myślę, że wiele aplikacji może mieć użytkownika do roli relacji jeden-do-wielu, zamiast wielu-do-wielu, jak w moim przypadku, ale nie będę sztywno kodować uprawnień ani roli do uprawnień w żadnej aplikacji.
Dalsze wyjaśnienie:Projekt bazy danych bezpieczeństwa oparty na rolach na Co # wiem?