2012-04-27 5 views
7

Wie wird in ASP.NET (MVC und WebAPI) das User Identity-Objekt mit den Daten aus dem FormsAuthentication-Cookie initialisiert?Wie ist die Benutzeridentität | Principal während des Anwendungslebenszyklus

Was ich tun möchte, ist die Verwendung von 2 Arten von Authentifizierung, Cookie-basierte und eine benutzerdefinierte Header basiert. Da die Klasse AuthorizeAttribute nur die Methode User.Identity.IsAuthorized() überprüft und keinen für FormsAuthentication spezifischen Code verwendet, bedeutet das, dass ich lediglich das Objekt User.Identity manuell einrichten muss, egal ob in der global.asax oder in einem DelegatingHandler.

Also, wie richte ich User.Identity ein? Wie konfiguriert das Framework es automatisch mit FormsAuthentication?

Antwort

1

Hier ist ein related answer.

Identität kann in einem Handler, in einem Modul oder in Global.asax festgelegt werden. Sie können sie zu jedem Zeitpunkt im Anforderungslebenszyklus ändern. In der Regel ist dies jedoch am besten in PostAuthenticateRequest der Fall. Zu diesem Zeitpunkt hat FormsAuthentication seine Arbeit getan und Sie können den HttpContext.Current.User erweitern oder ersetzen.

+1

Also basierend auf was Aliostad sagte, sobald ich die Identität einrichten, wenn sie 'User.Controller' hinzufügen, wird die Identität dazu übertragen? –

0

ASP.NET MVC Controller hat eine Controller.User aber Web-API hat keine. Es ist derzeit requested zu setzen.

+1

Ich kann tun: 'HttpContext.Current.User' –

+0

@Lolcoder Das ist nicht großartig. Es ist ein Hang-Over aus dem statischen/Thread-Speicherbereich Tage der Vergangenheit. ** Es kann nicht getestet werden **. – Aliostad