2015-11-27 12 views
5

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 chiamato signInManager.PasswordSignInAsync() e
  • nel metodo ExternalLoginCallback() dopo aver chiamato signInManager.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?

+0

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 –

risposta

0

Si potrebbe provare a implementare il proprio ApplicationUserStore e riempire qualsiasi proprietà dell'utente (o entità che viene utilizzata come identità) di cui si ha bisogno.

Problemi correlati