In un Asp.net Mvc 6 sito ho personalizzato l'out-of-the-box AccountController
in modo che posso aggiungere un Rivendica personalizzato prima di chiamare userManager.CreateAsync()
, sia al momento della registrazioneAsp.net MVC utente 6 get afferma subito dopo il log in
- con un account locale (e-mail/password), nel metodo
Register()
del controller - con un provider esterno (Google/Facebook), nel
ExternalLoginConfirmation()
del controller
Ora quello che' mi piacerebbe fare è, subito dopo l'utente accede, sia
- nel metodo
Login()
dopo aver chiamatosignInManager.PasswordSignInAsync()
e - nel metodo
ExternalLoginCallback()
dopo aver chiamatosignInManager.ExternalLoginSignInAsync()
... per recuperare tale affermazione, idealmente senza colpire il DB ottenere l'utente.
Ho notato che se guardo l'utente direttamente dopo l'accesso, la raccolta di attestazioni è vuota. Tuttavia, se lo guardo in una successiva azione del controller, la raccolta Claims viene popolata e contiene la mia richiesta personalizzata.
La domanda è: perché le attestazioni non vengono popolate immediatamente dopo l'accesso (suppongo che il codice di accesso non aggiorni CurrentPrincipal?) E ci sia un altro posto da verificare direttamente dopo l'accesso per ottenere le affermazioni senza colpire il DB?
Sono in grado di riprodurre ciò che state vedendo, potrebbe essere questo in base alla progettazione ... provare a postare questa domanda su http://github.com/aspnet/identity/issues –