2014-07-23 5 views
16

Ich setze IsPersistent beim Unterschreiben des Benutzers, wie man diesen Wert zurück liest?Wie liest man MVC OWIN AuthenticationProperties?

var identity = await UserManager.CreateIdentityAsync(appUser, DefaultAuthenticationTypes.ApplicationCookie); 
HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity); 
+2

@MarioDS, es gibt einen Grund, warum diese Frage nicht beachtet wurde. Da ist es nicht sehr klar. Aber wenn man das beiseite legt, sollte man zuerst verstehen, worum es in der Immobilie geht. Überprüfen Sie diese Antwort http://StackOverflow.com/a/32052308/5233410 Kurz gesagt, es (die Eigenschaft) wird nicht gespeichert, um zurückgelesen werden. Es weist das Framework an, ein Cookie zu erstellen. Also meine Annahme ist, dass, sobald der Cookie vorhanden ist, die Eigenschaft wahrscheinlich auf wahr gesetzt wurde und ansonsten falsch wäre. – Nkosi

+0

@Nkosi Ich realisierte, dass bald nach dem Setzen der Kopfgeld - kein Zurück leider :). Was ich eigentlich wissen wollte, ist, wie man andere Eigenschaften liest (besonders die, die im "Dictionary" von AuthenticationProperties gesetzt sind). – MarioDS

+0

vielleicht wird dieser Link Ihnen helfen. http://stackoverflow.com/questions/31946582/how-ispersistent-works-in-owin-cookie-authentication –

Antwort

0

Da es nicht viel Beschreibung gibt, bin ich über den Zusammenhang nicht sicher. Wie auch immer, Sie können alle AuthenticationProperties erhalten, die mit dem Anmeldevorgang bereitgestellt wurden, wenn Sie die Authentifizierung für die aktuelle Anforderung ausführen. Code wäre ..

AuthenticateResult authenticateResult = await HttpContext.GetOwinContext().Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ApplicationCookie); 

AuthenticationProperties yourAuthenticationProperties = authenticateResult.Properties; 
0

können Sie bitte diese versuchen, ich habe es nicht testen

IAuthenticationManager AuthenticationManager 
{ 
    get { return HttpContext.GetOwinContext().Authentication; } 
} 
0

Wie @Nkosi gesagt, Sie können nicht die Informationen aus dem OWIN abrufen, weil es nicht ist Dort gespeichert, müssen Sie den Cookie selbst abrufen und die Informationen manuell analysieren, aber dafür benötigen Sie eine OWIN-Middleware wie this one, damit Sie Ihren Cookie beliebig manipulieren können.

0

Sie können eine static property CookieAuthOptions erklären, wenn Sie CookieAuthOptions in ConfigureAuth oder anderen AuthOption konfiguriert auch ISecureDataFormat<AuthenticationTicket> implementieren sollten (zB: OAuthBearerOptions.AccessTokenFormat). Dieser enthält Protect & Unprotect Methoden.

Wenn Sie auf AuthenticationProperties zugreifen müssen, müssen Sie in der Lage sein, den Owin-Kontext in den Griff zu bekommen, um einen Verweis auf ein Ticket zu erhalten, das Ihr korrektes Format implementiert.

Als einfaches Beispiel Schritte,

Startup.cs => public static CookieAuthenticationOptions CookieAuthOptions; 
Startup.cs => ConfigureAuth => CookieAuthOptions.CookieName = "xxx"; 
BaseController.cs => Startup.CookieAuthOptions.TicketDataFormat.Unprotect(Request.Cookies["xxx"].Value).Properties; 

zu bekommen, was Sie wollen.

PS: Sie haben nicht erwähnt, wo Sie das brauchen, und ich nahm an, dass es in einem Controller wäre.