2010-01-08 5 views
7

Ich habe eine Anwendung, die Inhalte, die für Berechtigungen eingerichtet werden muss (das heißt Mitglied/Nichtmitglied)Berechtigungen Entwurf

Ich habe Rollen/Authentifizierungs-Setup ganz gut, das ist nicht mein Problem. Meine Frage ist im Grunde die beste Möglichkeit, Berechtigungen für jedes Objekt zu speichern. Im Wesentlichen gibt es Rollen "Gast" und "Mitglied" und einfache "Erlauben" "Verweigern" Berechtigungen für jedes Objekt.

Irgendwelche Ideen? Das Programm wird in ASP.NET MVC mit C# geschrieben, LINQ und MS-SQL 2005

+0

Ich bin ein wenig verwirrt ... fragen Sie, wie diese Rollen anwenden zu Controllern, Aktionsmethoden und schließlich Funktionen auf Ihren Webseiten oder fragen Sie, wie Sie diese Rollen auf bestimmte Objekte anwenden können? –

+0

für welche Objekte genau möchten Sie Berechtigungen hinzufügen? – shenku

Antwort

7

Wenn Sie Vermögenswerte (Dateien, Datenbankzeilen, Domain Entities, Dokumente, etc.) statt Anwendung schützen wollen Funktionen oder Benutzerfähigkeiten, passt rollenbasierte Sicherheit nicht sehr gut.

Ein besseres Modell ist zu verwenden Access Control Lists (ACLs) wie Sie von NTFS wissen. Sie haben es fast selbst gesagt, weil Sie jedem Objekt für jeden Benutzer oder jede Rolle bestimmte Berechtigungen zuweisen müssen. Das macht eine ACL.

Wenn Sie Objekte schützen müssen, die letztendlich Zeilen in SQL Server sind, müssen Sie benutzerdefinierte Tabellen für Ihre ACLs definieren, da SQL Server keine Berechtigungen auf Zeilenebene unterstützt.

Basierend auf den Daten in diesen ACLs müssen Sie die erforderlichen Sicherheitsprüfungen in Ihren Datenzugriffskomponenten implementieren.

Hier sind einige Links zu verwandten SO Antworten: