Verwendung des authorize-Attributs auf MVC3

8

Ich habe gelesen, dass, um das Attribut [Authorize] auf MVC zu verwenden, Sie es nur über eine Aktion oder über die Controller-Klasse platzieren müssen, die Sie sichern möchten.

Meine Frage ist: Wie weiß das Attribut Authorize , ob ein Benutzer angemeldet ist oder nicht? Muss ich ein Session-Objekt bereitstellen, damit Authorize weiß, ob ein Benutzer autorisiert ist?

    
Jose3d 20.12.2011, 14:52
quelle

2 Antworten

15

Dieses Attribut funktioniert, indem Sie HttpContext.User.Identity.IsAuthenticated betrachten.

Wenn Sie FormsAuthentication verwenden, wird dies auf "true" gesetzt, wenn der Benutzer auf seinem Computer ein gültiges FormsAuthentication-Cookie hat (das Sie mithilfe von FormsAuthentication.SetAuthCookie ).

Wenn Sie sich für das Innenleben von Authorize interessieren, stammt dies aus dem veröffentlichten Microsoft-Quellcode:

%Vor%

Hier finden Sie weitere Informationen zu FormsAuthentication .

>     
isNaN1247 20.12.2011, 14:54
quelle
2

Autorisieren Sie die Attributklasse standardmäßig, indem Sie den httpcontext als Argument verwenden. wenn angerufen. Es überprüft dann den HttpContext.User.Identity.IsAuthenticated bool Wert und verhält sich entsprechend. Dies funktioniert nur, wenn Sie die Formularauthentifizierung verwenden. Wenn Sie Ihre eigene Anmeldelogik verwenden (z. B. im Sitzungsobjekt), können Sie eine Klasse vom Autorisierungsattribut ableiten und aufrufen.

%Vor%

Dann können Sie diese Klasse wie folgt verwenden:

%Vor%

Das wird funktionieren. Sie können [MyAuthorize] anstelle von [Authorize] in allen Controller-Aktionen verwenden. Wenn sie false zurückgibt, wird eine Ansicht zurückgegeben (in diesem Fall "Nicht autorisiert"). Der Ansichtsname kann alles sein und kann in den Ansichten / dem freigegebenen Ordner gefunden werden.

    
Venugopal M 25.04.2013 16:17
quelle

Tags und Links