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?
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:
Hier finden Sie weitere Informationen zu FormsAuthentication .
>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.
Tags und Links asp.net-mvc-3