Wie die Umsetzung Berechtigungsprüfungen in ASP.NET MVC basiert auf Session-Daten?
Das wird meine erste ASP.NET MVC-Anwendung mit Formularen-Authentifizierung so versuche ich sicherzustellen, dass ich nichts verpasse. Das Szenario ist dies: Public /Gesicherten Bereichen.
Im privaten Bereich ist es sogar noch weiter eingeschränkt auf bestimmte Bereiche /Benutzer. Diese 'Bereiche' definiert werden, indem Sie Anpassungen an der Basis-Bereich, der für jeden Benutzer angepasst Gruppe.
So zum Beispiel ein Benutzer konnte sich zu url /Area/Controller/Action
. Müssten Sie die Erlaubnis haben, in den gesicherten Bereich oder würden Sie umgeleitet werden, um die Anmelde-Ansicht.
Habe ich gelesen, über die AuthorizeAttribute
aber ich bin mir nicht sicher wie/wo ich tun sollte, diese grundlegenden Prüfungen. Meine erste Vermutung wäre, zum speichern einer Benutzer-Objekt in der session nach einer erfolgreichen Anmeldung mit der Benutzer-und IP-details über das, was Sie Zugriff haben etc.
Die Berechtigungsprüfung für jedes geschützte controller-Aufruf überprüfen, ob eine gültige user-Objekt in der Mappe vorhanden, die IPs noch übereinstimmen, und der Benutzer hat Zugriff auf den bestimmten Bereich. Gibt es irgendwelche offensichtlichen Löcher zu diesem setup?
Edit: Wo/wie implementiere ich diese überprüft, so dass, wenn ein controller ist markiert mit [Autorisieren] es wird die Durchführung dieser session-Objekt überprüft?
Irgendwelche Hinweise oder Anregungen wäre sehr geschätzt werden. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut wie es aussieht ging ich mit einer custom AuthorizeAttribute. Es war eigentlich sehr einfach. Hier ist der code:
Dann auf meinem Controller ich nur noch
[Secure]
Attribut, und er nutzt meine Funktion oben jederzeit, dass die Steuerung zugegriffen wird. Ziemlich einfach. Ich habe auch einen[SecureByRole]
Attribut wie gut, dass nicht alle die gleichen Sachen, aber überprüft, für meine eigene Rolle, die Informationen als gut. Keine Notwendigkeit, für alles, was gebaut in voodoo aus der Konserve Mitgliedschaft 🙂Versuchen, den RoleProvider Klasse. Dies ist die basic-Rahmen wie ASP.net verwenden rolebased Autorisierung der Benutzer. Und ich glaube, Sie sollten [Autorisierung(Rollen='...')] Attribut zu machen.
In meinem vorherigen Anwendung, die ich verwendet ein einfaches HttpModule zu ergänzen, die der authentifizierte Benutzer mit zusätzlichen Rollen usw. ( ich Tat dies, weil meine Anforderungen waren sehr beschränkt ).