Wie Sie eine benutzerdefinierte "ClaimsPrincipal" in MVC 5?
Erstellte ich eine benutzerdefinierte principal-Klasse
public class FacebookPrincipal : ClaimsPrincipal
{
public JObject Data { get; set; }
}
Ist und ich es verwenden möchten. Wenn der Benutzer sich anmeldet, ich versuchte, zu
var fbP = new FacebookPrincipal { Data = user.Data };
Thread.CurrentPrincipal = fbP;
AuthenticationManager.User = fbP;
HttpContext.User = fbP;
Es richtig funktioniert nachdem ich es eingestellt, aber wenn ich ho home/index
den Wert verloren
var user = HttpContext.GetOwinContext().Authentication.User;
var bbbb = this.User;
var cccc = ClaimsPrincipal.Current;
Alle oben genannten Methoden geben ein Principal des Typs ClaimsPrincipal
- und casting auf FacebookPrincipal
null zurück.
Wie richte ich eine benutzerdefinierte principal?
Was hat die Aufzählung der
Hier ist eine Lösung, die ich gepostet auf eine ähnliche Frage: http://stackoverflow.com/a/25731422/264672
Claims
- Eigenschaft zurück?[0] = {http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier: #########}
- [1] = {http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name: ####}
- [2] = {http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider: ASP.NET Identity}
Hier ist eine Lösung, die ich gepostet auf eine ähnliche Frage: http://stackoverflow.com/a/25731422/264672
InformationsquelleAutor BrunoLM | 2013-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
ASP.NET Identität verwendet standardmäßig ClaimsIdentityFactory zu erstellen, bevor er "ClaimsIdentity" - Benutzer und Thread. Erstellen Sie Ihre eigenen ClaimsIdentityFactory, wo Sie können hinzufügen oder verwalten zusätzliche Informationen.
Und den folgenden code zum erstellen Ihrer Umsetzung für "ClaimsIdentity" oder seiner Unterklasse.
base.CreateAsync
und Zusammenführen derClaims
zu IhremClaimsIdentity
.InformationsquelleAutor jd4u
•Stellen Sie sicher, dass Sie unbedingt brauchen, um eine Unterklasse "ClaimsIdentity". Sie können weitere Infos wie die Ansprüche.
Sollten Sie vorsichtig sein, über das hinzufügen von zusätzlichen Forderungen für Ergänzende Informationen, die als Nebenwirkung kann eine änderung, wie die Autorisierungs-policy-Entscheidungen.
InformationsquelleAutor Brent Schmaltz
Heute Lesen der Frage wieder erkenne ich das Problem der Identität, Persistenz und nicht, wie man erstellen Sie benutzerdefinierte "ClaimsIdentity"!!!
Zudem, weiterhin die Identität zwischen zwei Anfragen, verwenden Sie folgenden code.
InformationsquelleAutor jd4u