Muszę wdrożyć elastyczne ORAZ proste (jeśli takie rzeczy istnieją), a jednocześnie w miarę możliwości korzystać z wbudowanych środków
Do tej pory mam wdrożone MembershipProvider i RoleProviders. To jest fajne, ale gdzie dalej?
Wydaje mi się, że muszę dodać termin „Przywilej” i zakodować te w aplikacji. Użytkownicy skonfigurują role, aby dodać uprawnienia do ról i przypisać role użytkownikom.
Czy to brzmi jak dobry model? Czy powinienem pomyśleć o dodaniu uprawnień na poziomie użytkownika oprócz dodawania ich do ról? Mogę, ale wyobrażam sobie problemy z konfiguracją (mylące) i podążaniem za wsparciem.
Jeśli tego nie zrobię, a niektórzy konkretni użytkownicy będą potrzebować mniejszych uprawnień - administrator będzie musiał utworzyć inną rolę itp.
Jakaś srebrna kula dla takiego systemu? I dlaczego Microsoft nie poszedł dalej niż tylko dostawcy członkostwa i roli?
Kolejny pomysł: pozostaw role jako właściciela „uprzywilejowanego” i zakoduj je na stałe. Następnie mogę zakodować te role w aplikacji za pomocą wszystkich dostępnych znaczników / atrybutów itp. - wszystkich Microsoft.
Dodaj nowy byt „Grupa” i utwórz relację w ten sposób
- Użytkownicy
- Grupy użytkowników
- Grupy
- RoleGroups
- Role
W ten sposób mogę zbierać role do grup i przypisywać te grupy Użytkownikom. Brzmi świetnie i pasuje do innych wzorców oprogramowania. Ale tak naprawdę nie mogę zaimplementować rzeczy w RoleProvider takich jak:
- AddUsersToRoles
- RemoveUsersFromRoles
A niektóre rzeczy nie mają już sensu, ponieważ zostaną zakodowane na stałe
- DeleteRole
- CreateRole
źródło
IPrincipal
sięIClaimsPrincipal
, kiedy chcesz zrobić kontrole wniosków. Będziesz pisać dużo własnego kodu, jeśli chcesz go dopasować (na przykład) uwierzytelnianiem formularzy, ale oczywiście można to zrobić (zgodnie z linkiem).