Asp.net Mvc 6 получает претензии пользователей сразу после входа в систему

На веб-сайте Asp.net Mvc 6 я настроил готовый AccountController, чтобы добавить пользовательское утверждение перед вызовом userManager.CreateAsync(), как при регистрации

  • с локальной учетной записью (электронная почта/пароль), в методе Register() контроллера
  • с внешним провайдером (google/facebook), в ExternalLoginConfirmation() контроллера

Теперь, что я хотел бы сделать, сразу после входа пользователя оба

  • в методе Login() после вызова signInManager.PasswordSignInAsync() и
  • в методе ExternalLoginCallback() после вызова signInManager.ExternalLoginSignInAsync()

... чтобы получить это утверждение, в идеале, не обращаясь к БД, чтобы получить пользователя.

Я заметил, что если я смотрю на пользователя сразу после входа, коллекция утверждений пуста. Однако, если я посмотрю на это в последующем действии контроллера, коллекция Claims будет заполнена, и в ней будет моя пользовательская претензия.

Вопрос в том, почему утверждения не заполняются сразу после входа в систему (полагаю, код входа не обновляет CurrentPrincipal?) и есть ли другое место, где можно проверить сразу после входа, чтобы получить утверждения, не нажимая БД?


person adrian h.    schedule 27.11.2015    source источник
comment
Я могу воспроизвести то, что вы видите, может быть, это так задумано... попробуйте опубликовать этот вопрос по адресу github.com/aspnet/identity/issues   -  person Kiran Challa    schedule 28.11.2015


Ответы (1)


Вы можете попытаться реализовать свой собственный ApplicationUserStore и заполнить любые свойства пользователя (или объекта, который используется в качестве объекта идентификации), которые вам нужны.

person Dawid Rutkowski    schedule 11.01.2016