Fügen Sie die Ansprüche nach dem erfolgreichen login und rufen Sie es an anderer Stelle in der Anwendung
Bitte ich brauche Hilfe bei der Durchführung einer benutzerdefinierten Art und Weise der Zuordnung von Forderungen zu authentifizierten Benutzern werden.
Auf dem erfolgreichen login,
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
//Get the user
ApplicationUser user = UserManager.FindByEmail(model.Email);
//Ends here
ClaimsIdentity identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true }, identity);
Ich die userId zu Holen, die Rolle und andere Informationen über den Benutzer aus dem datastore. Danach muss ich hinzufügen Forderungen, über die Benutzer mit diesen Informationen wie E-Mail, Rolle, Vorname, Nachname, Geschlecht, etc. vor der Umleitung der Benutzer-dashboard.
Dies ist die Art, wie ich versuche, es zu tun, aber das problem ist, dass selbst nach dem hinzufügen der Ansprüche an die login-Methode, ich bin nicht in der Lage, um es abzurufen am _loginPartial razor view
Zum Beispiel, wenn ich wollen, um den E-Mail-Streitwert bei der Anmeldung teilweise, wie dies
var claims = ClaimsPrincipal.Current.Claims;
var principal = (ClaimsPrincipal)Thread.CurrentPrincipal;
var email = principal.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault();
Gibt Sie null zurück.
So, als Ergebnis, kann ich nur Zugriff auf die gleichen login-Methode nach dem hinzufügen aber ich muss in der Lage sein, um es von überall aus zugreifen in der Anwendung.
Bitte ich werde es begrüßen jede Hilfe, wie Sie abgerufen werden können diese Forderungen nirgendwo sonst in der gesamten Anwendung.
Danke.
Ja. EF 6. Vs 2015. ASP.NET MVC
die Identität version verwenden Sie
Identität-version ist 2.2.1
InformationsquelleAutor Josh | 2016-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie Ihre Ansprüche vor login nicht nach. Betrachten Sie dieses Beispiel:
Nun, da wir injiziert haben unsere Forderungen, während Sie sich angemeldet haben, haben wir Zugang zu Forderungen, wo immer wir wollen:
Außerdem könnte man hinzufügen, Ihre Ansprüche im
ApplicationUser.GenerateUserIdentityAsync()
Methode. Indem Sie Ihre Ansprüche in dieser Methode Sie verwenden könnteSignInManager.PasswordSignInAsync()
Methode anmelden, die Benutzer ohne änderungen an Standard -Login
action-Methode.Haben Sie konfigurierten Cookie-Authentifizierung in
ConfigureAuth
Methode?Ich bin nicht vertraut mit, wie das geht. Könntest du eine Anleitung bitte? Ich denke, dass da, wo ich bin, fehlt noch etwas wichtiges
Schauen Sie unter meine Beispiel-repo. Es würde hilfreich sein.
Hi @Sam, der Ansatz, den du oben vorgeschlagen (d.h. der Inbetriebnahme der neuen Ansprüche in ApplicationUser Klasse gearbeitet. Später bekam ich es funktioniert auch so und jetzt habe ich meine Forderungen nach dem login und ich kann es nach dem login. Ich danke Ihnen sehr. Ich bin sehr dankbar für Ihre Unterstützung
InformationsquelleAutor Sam Farajpour Ghamari
Dann in der Ansicht Seite
Es zeigt den authentifizierten Benutzer Vorname.
und importieren Sie die folgenden Pakete, die am oberen Rand der Seite
hast du den Wert in der user-Tabelle behauptet
Der Wert in der Benutzer-claims-Tabelle ist die einzige Forderung, die ich erstellt während der Registrierung der Benutzer. Und das ist die eine, auf die ich zugreifen kann von überall in der Anwendung. Die anderen, die ich hinzufügen nach erfolgreichem login, sind nicht in der Tabelle Hinzugefügt, und Sie sind nicht zugänglich
dude, sollten Sie Daten hinzufügen, um Benutzer behauptet, während der Benutzer-Anmeldung nur nicht beim login. für single-user-es sollte sein einziger Rekord nur.
importieren Sie die zwei Pakete in der Ansicht-Seite '@mit Microsoft.AspNet.Identität' '@mit System.Sicherheit.Forderungen;'
InformationsquelleAutor anand
Identität 2, das ist sehr unterschiedlich und einfach mit der Erstellung einer forderungsprinzipal Fabrik und dann Einhaken es bis in Ihre startup-ConfigureServices wie unten...
Du dann würde es Haken bis in ConfigureServices nur nach dem Aufruf AddIdentity so...
Hier ist ein sehr guter Artikel über das Thema...
https://www.codeguru.com/csharp/csharp/cs_misc/security/asp.net-core-and-claim-based-security.html
InformationsquelleAutor Hoots
sind Sie nicht in der Lage, Zugang
User.Identity
aus der Sicht?Abrufen Ansprüche für einen Benutzer, es war so einfach für mich:
var identity = (ClaimsIdentity) User.Identity
Und dann Zugriff auf
identity.Claims
und die Verwendung von LINQ zum abrufen von spezifischen Forderungen.var email = identity.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault();
und wenn ich versuche E-Mails abrufen, ist es leerOkay, also deinen aktuellen code nicht zeigen, dass. Sind Sie versuchen, den Zugriff eines Benutzers Ansprüche vor der Anmeldung?
Beim Debuggen gibt es keine Ansprüche, die in Ihrer "ClaimsIdentity"?
Ich bin nicht versuchen auf die Ansprüche vor der Anmeldung. Seine nach. Keine weiteren Ansprüche, außer denen, die ich Hinzugefügt, während Benutzer anlegen. Das ist GivenName. Wenn ich versuche, retieve, dass man, Es gibt den erwarteten Wert
Okay @terbubbs, Mein Hauptziel bei dem Versuch, Sie zu speichern, nur in cookies und session ist zu vermeiden, dass die Datenbank bei jeder Anfrage überprüfen, für einige Berechtigungen des angemeldeten Benutzers. Als solche will ich Sie Holen alle den rechten des angemeldeten Benutzers und speichert Sie in der session für die peroformance Gründen.
InformationsquelleAutor terbubbs
Das Eigentum von IdentityUser gibt Ihnen eine ICollection mit dieser Sammlung können Sie die folgenden C# - Methode:
InformationsquelleAutor Uwe Köhler