w A Asp.net MVC 6 stronie ja dostosował out-of-the-box AccountController
abym dodać niestandardową roszczenia przed wywołaniem userManager.CreateAsync()
, zarówno przy rejestracjiAsp.net MVC 6 get użytkownik twierdzi, natychmiast po zalogowaniu
- z kontem lokalnym (email/hasło), w metodzie
Register()
kontrolera - z zewnętrznym dostawcą (google/facebook), w
ExternalLoginConfirmation()
kontrolera
teraz to, co ja” Chciałbym to zrobić, zaraz po użytkownik loguje się, zarówno
- w metodzie
Login()
po wywołaniusignInManager.PasswordSignInAsync()
i - w metodzie
ExternalLoginCallback()
po wywołaniusignInManager.ExternalLoginSignInAsync()
... aby odzyskać to twierdzenie, najlepiej bez uderzania DB zdobądź użytkownika.
Zauważyłem, że jeśli spojrzę na użytkownika bezpośrednio po zalogowaniu, kolekcja roszczeń jest pusta. Jeśli jednak spojrzę na to w kolejnej akcji kontrolera, kolekcja roszczeń zostanie wypełniona i zawiera moje niestandardowe roszczenie.
Pytanie brzmi, dlaczego roszczenia nie są wypełniane natychmiast po zalogowaniu się (domyślam się, że kod logowania nie odświeża CurrentPrincipal?) I czy istnieje inne miejsce do sprawdzenia bezpośrednio po zalogowaniu, aby uzyskać roszczenia bez uderzenia w DB?
Jestem w stanie zaaprobować to, co widzisz, może to być zgodne z projektem ... spróbuj opublikować to pytanie na stronie http://github.com/aspnet/identity/issues –