Moje doświadczenie podczas eksperymentowania z niestandardową implementacją RBAC jest następujące:
-
Czytasz dużo literatury RBAC i myślisz, że ją rozumiesz. Potem idziesz dalej i próbujesz to wdrożyć, tylko po to, by zdać sobie sprawę, że tak naprawdę wcale tego nie zrozumiałeś. W końcu nabierze to sensu, gdy będziesz kontynuować projekt.
-
Na podstawie Twojego pytania znasz już domenę biznesową, do której chcesz zastosować RBAC. Ale na razie zapomnij o rzeczywistych obiektach biznesowych. Twoja implementacja RBAC powinna być ogólna, co oznacza, że masz schemat bazy danych składający się z tabel ról, użytkowników, uprawnień, operacji itp. Wtedy będziesz mieć obiekty, które mapują do takich tabel (relacja jeden do jednego).
Gdy już masz tę implementację RBAC, można ją zamodelować do praktycznie dowolnej domeny biznesowej, takiej jak „Departament”, o którym wspomniałeś.
Pamiętaj tylko, że nie wszystko jest idealne... Ulepszyłem/zmodyfikowałem/zaczerpnąłem z aktualnej literatury RBAC, aby dodać niestandardowe funkcje, poprawić wydajność itp.
Nie pracowałem nad tym przez jakiś czas, więc mam nadzieję, że mam rację:
- Użytkownik:Instancje są tworzone i zapisywane w jego tabeli pomocniczej.
-
Rola:Instancje są tworzone i zapisywane w tabeli pomocniczej. Role zostaną przypisane użytkownikom.
-
Pozwolenie:Pozwolenie jest w zasadzie kombinacją Operacji na obiekcie. Uprawnienia są przypisywane do ról.
-
Operacja:Operacja to po prostu wszystko, czego chcesz. Może to być CRUD (tworzenie, odczytywanie, aktualizowanie, usuwanie) lub może to być również „drukowanie”, „wyszukiwanie” lub cokolwiek, co człowiek (lub system) może wykonać na obiekcie (lub grupie obiektów).
- Obiekt:to w zasadzie wszystkie obiekty, które tworzą domenę biznesową.
Aby uzyskać jeszcze większą moc, możesz wprowadzić ograniczenia, aby zastosować ogromną liczbę różnych ograniczeń.
Dzięki tej strukturze powinieneś być w stanie mapować:
- Kto może przypisywać użytkowników do działu
- Kto może usunąć ich z działów
- Ilu użytkowników może być w dziale
- Jacy użytkownicy (na podstawie ich przypisanych ról) mogą znajdować się w dziale
- Które role mogą wykonywać operacje dla działu (tworzenie, odczytywanie, aktualizowanie, usuwanie)
- itd.