Почему User.IsInRole не работает при вызове после метода SignInManager.PasswordSignInAsync? - PullRequest
0 голосов
/ 08 октября 2019

это очень любопытно.

У меня есть приложение MVC 5, которое использует OWIN для аутентификации пользователей с пользовательскими хранилищами пользователей и ролей.

У контроллера учетной записи есть метод Login, который вызывает

var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout: false);

Когда«result» - это SignInStatus.Success, я звоню:

User.IsInRole("Administrator")

Возвращает «false», даже если пользователь находится в этой роли. После выполнения метода Login страница перенаправляется на домашнюю страницу. Этот контроллер домашней страницы имеет метод «OnActionExecuting». Внутри этого метода есть еще один вызов

User.IsInRole("Administrator")

. В этот момент IsInRole возвращает true.

Чем объясняется такое поведение?

РЕДАКТИРОВАТЬ: У меня естьвызывается

User.Identity.GetUserId()

после SignInManager.PasswordSignInAsync и возвращает ноль. Теперь возникает вопрос, почему SignInManager.PasswordSignInAsync фактически не входит в систему, если пользователь не обновляется?

Спасибо, Хайме

...