Verwenden von VS 2013, der Standard-MVC-Vorlage und des Identity-Provider-Frameworks
Der Benutzer ist angemeldet und ich habe:
%Vor%Und der Controller der Mitglieder ist wie folgt:
%Vor% Nachdem Zeile X ausgeführt wurde, kann ich bestätigen, dass der Benutzer zur Tabelle dbo.AspNetUserRoles
hinzugefügt wurde. Der Benutzer beim Erreichen des Mitglieder-Controllers schlägt jedoch die Rollenprüfung fehl. User.IsInRole("Members")
gibt false zurück.
Wenn sich der Benutzer abmeldet und sich erneut anmeldet, wird der Zugriff auf den Members-Controller durchgeführt, dh User.IsInRole("Members")
gibt jetzt true zurück.
Gibt es Caching? Warum die Verzögerung? Wie überwinde ich es?
Ich habe auch versucht, die Methode in Line X in eine asynchrone Methode umzuwandeln und UserManager.AddToRoleAsync
verwendet. Derselbe verzögerte Effekt ist immer noch da.
Die Identitätsinformationen (Rollen, Claims) werden beim Anmelden in den Cookie eingefügt. Da der Benutzer bereits angemeldet ist, aktualisiert diese Codezeile UserManager.AddToRole(User.Identity.GetUserId(), "Members")
die db, nicht jedoch den Cookie. Sie müssen den Cookie erneut ausgeben.
Versuchen Sie, SignInManager.SignIn(user, false, false);
hinzuzufügen (wenn Sie keinen Benutzer haben, var user = UserManager.FindById(User.Identity.GetUserId())
) vor RedirectToAction("Index", "Members");
Tags und Links asp.net-mvc asp.net-identity roleprovider