5

In einer Asp.net Mvc 6 Website angepasst ich die out-of-the-box AccountController, so dass ich einen benutzerdefinierten Anspruch vor dem Aufruf userManager.CreateAsync() hinzufügen, sowohl bei der RegistrierungAsp.net Mvc 6 erhalten Benutzer behaupten, sofort nach der Anmeldung

  • mit einem lokalen Konto (Email/Passwort), in der Register() Methode des Controllers
  • mit einem externen Anbieter (google/Facebook), in den ExternalLoginConfirmation() des Controllers

Nun, was ich D gerne tun, ist unmittelbar danach der Benutzer anmeldet, beide

  • im Login() Verfahren nach nach dem Aufruf signInManager.PasswordSignInAsync() und
  • im ExternalLoginCallback() Methode aufrufen signInManager.ExternalLoginSignInAsync()

... diesen Anspruch abzurufen, im Idealfall, ohne dass die DB zu schlagen zu Hol den Benutzer.

Ich bemerkte, dass, wenn ich Benutzer direkt nach der Anmeldung betrachte, die Claims-Auflistung leer ist. Wenn ich es jedoch in einer nachfolgenden Controller-Aktion anschaue, wird die Claims-Auflistung ausgefüllt und enthält meine benutzerdefinierten Ansprüche.

Die Frage ist, warum werden die Ansprüche nicht sofort nach der Anmeldung ausgefüllt (ich denke, der Anmeldecode aktualisiert das CurrentPrincipal nicht?) Und gibt es einen anderen Ort, direkt nach der Anmeldung zu überprüfen die Ansprüche ohne die DB zu treffen?

+0

Ich bin in der Lage zu repro, was Sie sehen, möglicherweise ist dies per Entwurf ... versuchen Sie, diese Frage an http://github.com/aspnet/identity/issues zu stellen –

Antwort

0

Sie könnten versuchen, Ihren eigenen ApplicationUserStore zu implementieren und alle Eigenschaften des Benutzers (oder der Entität, die als Identitätsentität verwendet wird), die Sie benötigen, zu füllen.

Verwandte Themen