Wie man am besten mit Berechtigungen (nicht Rollen) in der asp.net-Mitgliedschaft umgeht, insbesondere in ASP.NET MVC

Es gibt viele Fragen (und Informationen) zum Einrichten der asp.net-Mitgliedschaft, zu Rollenanbietern und dergleichen. Geben Sie an, ob Sie die von Microsoft bereitgestellte integrierte Plattform verwenden oder die Basisklassen erweitern und Ihre eigene Rolle übernehmen möchten.

Ich habe beschlossen, die Standardanbieter zu erweitern und meine eigenen Mitgliedschafts- und Rollenanbieter zu implementieren. Nun meine Frage, geht es speziell um Rollenauthentifizierung.

Traditionell würden Sie Rollen wie "Manager", "Administrator", "Mitarbeiter", "Super User" oder was auch immer Sie haben, erstellen. Aber was würden / sollten Sie in Bezug auf Berechtigungen tun, die ich für ein feineres Maß an Kontrolle halte? Lassen Sie mich näher darauf eingehen ....

Innerhalb meiner asp.net mvc-Site habe ich verschiedene Bereiche wie Administration, Management, Messaging, Berichterstellung usw. Ich würde Rollen für jede dieser Bereiche wie "Administrator", "Manager", "Reporter" usw. erstellen. Ohne die entsprechende Rolle würden Sie Ich kann nicht auf diesen Bereich der Website zugreifen. Also würde ich auf Klassenebene die gesamten Controller damit sperren.

Aber jetzt nehmen Sie einen Bereich als Beispiel; Nachrichtenübermittlung und sagen, ich möchte genauere Berechtigungen für CRUD haben. Eine Nachricht erstellen, Nachrichten anzeigen / lesen, Nachrichten bearbeiten, Nachrichten löschen usw.

Endlich meine Frage. Wie wäre es am besten, dieses feinere Maß an Kontrolle umzusetzen? Ein Ansatz, den ich sehe (der nicht sicher ist, ob er gut ist), besteht darin, für alles nur asp.net-Mitgliedschaftsrollen zu erstellen. Also könnte ich haben ....

Messenger (allgemeine Rolle), CreateMessage, ReadMessage, EditMessage, DeleteMessage.

Einerseits möchte ich, dass einige Benutzer Nachrichten lesen / anzeigen können. Aber nicht unbedingt erstellen oder löschen. Bei einzelnen Controller-Aktionen können die spezifischen Rollen angewendet werden.

Haben Sie Probleme mit diesem Ansatz? Hast du eine bessere Idee?

Lösung bisher

Ich habe beschlossen, ein eigenes Schema zu erstellen und benutzerdefinierte Mitgliedschafts- und Rollenanbieter zu implementieren. Mein Schema enthält:

BenutzeBenutzerprofiGenehmigun PermissionAssignmentRoll RoleAssignment

Wird für die nächsten ein oder zwei Tage weg sein, wird aber mit weiteren Informationen aktualisiert, wenn ich die Chance dazu bekomme.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage