Ich muss flexibel UND einfach implementieren (falls es so etwas gibt) und gleichzeitig, wenn möglich, eingebaute Mittel einsetzen
Bisher habe ich MembershipProvider und RoleProviders implementiert. Das ist cool, aber wohin gehe ich als nächstes?
Ich habe das Gefühl, ich muss den Begriff "Priviledge" hinzufügen und diese dann in der Anwendung fest codieren. Benutzer konfigurieren Rollen, um Rollen Berechtigungen hinzuzufügen und Benutzern Rollen zuzuweisen.
Klingt das nach einem guten Modell? Sollte ich darüber nachdenken, Berechtigungen auf Benutzerebene zusätzlich zu den Rollen hinzuzufügen? Ich könnte, aber ich stelle mir Probleme mit der Einrichtung (verwirrend) und der folgenden Unterstützung vor.
Wenn ich das nicht tue und einige bestimmte Benutzer weniger Berechtigungen benötigen, muss der Administrator eine andere Rolle erstellen, usw.
Irgendeine Silberkugel für ein solches System? Und warum ging Microsoft nicht weiter als nur Mitglieder- und Rollenanbieter?
Eine andere Idee: Lassen Sie die Rollen als "Privilegierten" und sichern Sie sie fest. Dann kann ich diese Rollen in der App mit allen verfügbaren Markups / Attributen usw. codieren - alles Microsoft.
Fügen Sie eine neue Entität "Gruppe" hinzu und erstellen Sie eine solche Beziehung
- Benutzer
- Benutzergruppen
- Gruppen
- RoleGroups
- Rollen
Auf diese Weise kann ich Rollen in Gruppen sammeln und diese Gruppen Benutzern zuweisen. Klingt gut und passt zu anderen Softwaremustern. Aber dann kann ich Dinge in RoleProvider nicht wirklich implementieren wie:
- AddUsersToRoles
- RemoveUsersFromRoles
Und manche Dinge machen keinen Sinn mehr, weil sie fest codiert sind
- DeleteRole
- CreateRole
quelle
IPrincipal
zu ,IClaimsPrincipal
wenn Sie Anspruch Kontrollen tun möchten. Sie werden viel von Ihrem eigenen Code schreiben, wenn Sie ihn (zum Beispiel) in die Formularauthentifizierung einfügen möchten, aber dies ist natürlich möglich (gemäß dem Link).