2015-11-27 24 views
5

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łaniu signInManager.PasswordSignInAsync() i
  • w metodzie ExternalLoginCallback() po wywołaniu signInManager.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?

+0

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 –

Odpowiedz

0

Możesz spróbować zaimplementować własny ApplicationUserStore i wypełnić dowolne właściwości użytkownika (lub jednostki, która jest używana jako jednostka tożsamości), której potrzebujesz.