Ich habe ein Problem, die Ansprüche zu verstehen, besonders Rollen.
Im Folgenden werden mir zwei Rollen zugewiesen, die dem Benutzer zugewiesen sind
%Vor%Aber wenn ich die Ansprüche bekomme und es durchspiele, bekomme ich nur die erste Rolle. Ich bekomme nicht beide Rollen. Bitte beachten Sie, dass ich zum Zeitpunkt der Anmeldung keine Rollen in den Ansprüchen eingerichtet habe.
Aktionscode
%Vor%und der entsprechende View-Code
%Vor%und hier ist der Ausgang. Was fehlt mir hier?
Und die Tabelle hat die zwei Rollen
Update # 1
Ich habe Vornamen und Nachnamen als Remote-Ansprüche hinzugefügt, angemeldet und beide Rollen werden jetzt angezeigt. Ich habe nichts geändert. So, jetzt bin ich mehr verwirrt ...
Hier ist der Anbieter zum Hinzufügen von Remote-Ansprüchen
%Vor%und die Login-Aktion zur Verwendung des Anspruchsanbieters
%Vor%Es ist schwer zu sagen, aber ich denke, was hier passiert ist, dass Ansprüche in dem Cookie zwischengespeichert wurden, der zur Authentifizierung des Benutzers verwendet wird. Wenn sich ein Benutzer zum ersten Mal anmeldet, werden die Ansprüche aus der Datenbank gelesen, ein Cookie wird mit den Ansprüchen erstellt und im Browser des Benutzers gespeichert. Alle weiteren Anfragen lesen die Benutzerinformationen vom Cookie bis zum Ablaufdatum. Ich habe einen ausführlichen Blogpost über Ich schrieb eine Weile zurück auf ASP.NET Identität Cookie Ablauf Weitere Informationen zur Ablaufverwaltung
Einige Ihrer Formulierungen suggerieren (nur eine Vermutung meinerseits), dass die Rollen hinzugefügt wurden, nachdem der Benutzer sich bereits angemeldet hatte und daher die Rollen dem Cookie nicht hinzugefügt wurden und nicht ausgedruckt wurden. Die Ansprüche wurden aktualisiert, als Sie den Code hinzugefügt haben, um die Namen hinzuzufügen, weil einer der wenigen Gründe:
Sie waren zwar eingeloggt, aber wenn Sie die Aktion login
erneut posten, rufen Sie signout
und dann signin
auf, wodurch der Cookie aktualisiert wurde:
AuthenticationManager.SignOut();
AuthenticationManager.SignIn(new AuthenticationProperties
Sie können das Verhalten kopieren, in dem Sie gerade sind:
AspNetUserRoles
AspNetUserRoles
hinzu (entweder manuell oder durch eine Aktion über Ihre Anwendung, in der Sie Rollen für Benutzer verwalten) Jedes Mal, wenn Sie eine Rolle oder einen Anspruch hinzufügen, müssen Sie sich vom Benutzer manuell abmelden oder Sie können einen Anruf tätigen, der den Cookie wie bereits erwähnt aktualisiert. Diese Antwort hier gibt einen Überblick darüber, wie der Cookie effektiv aktualisiert wird.
Tags und Links c# asp.net asp.net-identity claims-based-identity