So erstellen Sie ein benutzerdefiniertes Attribut, das zur Anmeldung umgeleitet wird, wenn es false zurückgibt, ähnlich dem Autorize-Attribut - ASP.NET MVC

7

Ich habe versucht, ein paar Dinge über benutzerdefinierte Attribute zu googeln, aber ich bin mir immer noch nicht sicher, wie ich das anstellen soll ...

Ich speichere ein paar wichtige Details des Benutzers in Sitzungscookies (ex UserID), sobald das Benutzerprotokoll in .. ist und alles, was ich tun möchte, ist ein Attribut erstellen, wenn das

if (Session["UserID"] == null)

dann wird es zum Login umgeleitet, genau wie das [Authorize] -Attribut. Auf diese Weise kann ich dieses Attribut überall auf der Controller-Ebene anwenden.

Sollte ich das Autorize-Attribut überschreiben? Erstelle ein neues? Wie bekomme ich es umleiten, um auch einzuloggen?

Ich benutze auch ASP.NET MVC 4

Danke für jede Hilfe

    
user1189352 03.10.2015, 17:07
quelle

2 Antworten

13

Sie können eine benutzerdefinierte AuthorizeAttribute erstellen und AuthorizeCore() und HandleUnauthorizedRequest() nach Bedarf überschreiben. Fügen Sie Ihre eigene Logik hinzu, die bei Bedarf die Überprüfung und Weiterleitung durchführt.

Ich zeige nur ein einfaches Beispiel mit MVC ActionFilterAttribute (das ist nicht der beste Ort, um Authentifizierung / Autorisierung zu tun)

%Vor%

Vergessen Sie nicht, die Variable Session["UserID"] in Ihrer /User/Login action-Methode nach der korrekten Benutzerüberprüfung zu setzen.

    
Arghya C 03.10.2015, 17:21
quelle
8

Sie können Ihre eigene Version von Authorize Attribut durch Implementierung der IAuthorizationFilter Schnittstelle. Hier ist ein Beispiel:

%Vor%

und ein Anwendungsbeispiel:

%Vor%     
Nasreddine 03.10.2015 17:39
quelle