Wie werden Berechtigungsprüfungen in ASP.NET MVC basierend auf Sitzungsdaten implementiert?

8

Dies wird meine erste ASP.NET MVC-Anwendung mit Formularauthentifizierung sein, also versuche ich sicherzustellen, dass ich nichts vermisse. Das Szenario lautet: Öffentliche / gesicherte Bereiche.

Im privaten Bereich ist es noch weiter auf bestimmte Bereiche / Benutzer beschränkt. Diese 'Bereiche' werden durch Anpassungen an den Basisbereich definiert, die pro Benutzergruppe angepasst werden.

So könnte beispielsweise ein Benutzer zur URL /Area/Controller/Action gelangen. Sie müssten eine Berechtigung für den gesicherten Bereich haben oder sie würden zur Anmeldungsansicht weitergeleitet.

Ich habe über die AuthorizeAttribute gelesen, aber ich bin mir nicht sicher, wie / wo ich diese grundlegenden Überprüfungen durchführen sollte. Meine erste Idee wäre, ein Benutzerobjekt in der Sitzung nach einer erfolgreichen Anmeldung mit der IP des Benutzers und Details darüber, wozu sie Zugriff haben, usw. zu speichern.

Die Berechtigungsprüfung für jeden gesicherten Controller-Aufruf würde prüfen, ob ein gültiges Benutzerobjekt in der Sitzung existiert, die IPs stimmen immer noch überein und der Benutzer hat Zugriff auf den bestimmten Bereich. Gibt es offensichtliche Löcher in diesem Setup?

Bearbeiten: Wo / wie implementiere ich diese Überprüfungen, so dass, wenn ein Controller mit [Authorize] markiert wird, diese Session-Objektüberprüfungen durchgeführt werden?

Irgendwelche Hinweise oder Vorschläge würden sehr geschätzt werden. Danke.

    
Kelsey 20.07.2009, 01:51
quelle

4 Antworten

11

Nun, es sieht so aus, als wäre ich mit einem benutzerdefinierten AuthorizeAttribute gegangen. Es war eigentlich sehr einfach. Hier ist der Code:

%Vor%

Dann muss ich auf meinen Controllern nur ein [Secure] -Attribut setzen und es verwendet meine Funktion immer dann, wenn auf den Controller zugegriffen wird. Ziemlich einfach. Ich habe auch ein [SecureByRole] -Attribut gemacht, das genau die gleichen Sachen macht, aber auch nach meiner eigenen Rolleninformation sucht. Keine Notwendigkeit für all das, was in Voodoo aus der Dosenmitgliedschaft eingebaut wurde:)

    
Kelsey 10.08.2009, 15:55
quelle
2

Sehen Sie sich die RoleProvider-Klasse an. Dies ist der grundlegende Rahmen dafür, wie ASP.net Benutzern rollenbasierte Berechtigungen erteilt. Und ich denke, Sie sollten [Autorisieren (Rollen = '...')]] verwenden Attribut, um davon Gebrauch zu machen.

    
xandy 20.07.2009 02:30
quelle
1

In meiner vorherigen Anwendung habe ich ein einfaches HttpModule verwendet, um den authentifizierten Benutzer mit zusätzlichen Rollen usw. zu erweitern (ich tat dies, weil meine Anforderungen sehr eingeschränkt waren).

%Vor%     
Neal 20.07.2009 03:53
quelle
1
%Vor%     
Tawani 02.04.2013 18:02
quelle