Wie beschränke ich den Zugriff auf bestimmte Seiten im ASP.NET MVC?
Möchte ich sperren den Zugriff auf einen Benutzer - Seite BEARBEITEN (zB. /Benutzer/rein.krome/Bearbeiten), wenn
a) Identität.IsAuthenticated = false
werden, oder Sie werden authentifiziert, aber
b) Idenitity.Name != Benutzer-name des Benutzer-Seite, die Sie versuchen zu Bearbeiten
c) Identität.UserType() != UserType.Administrator //Das ist wie eine Rolle, ohne RoleProviders.
Ich gehe davon aus, dass u können schmücken einen controller oder eine controller-action Methode mit etwas(s), aber ich bin mir gerade nicht sicher, was?
InformationsquelleAutor Pure.Krome | 2009-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf die
AuthorizeAttribute
.ASP.Net MVC: Kann die AuthorizeAttribute überschrieben werden?
InformationsquelleAutor Daniel A. White
Ein benutzerdefiniertes Attribut, abgeleitet aus AuthorizeAttribute ist, was ich verwenden, um dies zu tun. Überschreiben Sie die OnAuthorize - Methode und implementieren Sie Ihre eigene Logik.
Die AuthorizationContext parameter enthält Verweise auf die Controller, HttpContext, ResultContext, RouteData und Ergebnis. Sie sollten in der Lage sein zu Holen alles, was Sie benötigen, aus der RouteData. Zu verallgemeinern, fügen eine Eigenschaft, um Ihre Attribut erlaubt Ihnen die Angabe der route-Daten-Schlüssel zu verwenden, für den Namen des Benutzers. Sie haben zu tun, die die DB Sachen zu überprüfen, die Nutzer-Typ unabhängig. Möglicherweise möchten Sie zwei Konstruktoren: einen, der Ihre Datenbank-Kontext/Ebene Oberfläche und eine andere, die nimmt keine Parameter und erstellt die Standard-Datenbank-Kontext/Ebene. Nutzen der ehemaligen in unit-Tests.
InformationsquelleAutor tvanfosson
Ich implementiert die folgenden ActionFilterAttribute und es funktioniert, um die Authentifizierung und Rollen. Ich bin die Speicherung Rollen in meiner eigenen DB-Tabellen wie diese:
Ich nenne das so...
Mikerennick, tun Sie keine Zwischenspeicherung der Benutzer oder Rollen?
Ich bin nicht mit Zwischenspeichern-aber ich sehe keinen Grund, warum die Liste der Rollen, die einem Benutzer zugewiesen konnte nicht zwischengespeichert werden. Könnten Sie den cache aktualisieren, wenn änderungen vorgenommen werden Rollen zugewiesen. Der obige code hat keinen Einfluss auf die Zwischenspeicherung von Benutzern, wie ich bin lediglich auf der Suche auf httpcontext für den aktuellen Benutzer. Ich sollte auch erwähnen, dass das hinzufügen einer check für Benutzer ist im Prinzip die gleiche wie die überprüfung für zulässig Rollen.
InformationsquelleAutor mikerennick