Я создаю приложение MVC5 с ASP.NET Identity 2.0 и EF 6.1.1.Почему IsInRole всегда возвращает false?
Это часть моего текущего метода Логин:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
return View(model);
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.Success:
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user == null)
break;
if (!UserManager.IsInRole(user.Id, "OfficeUser"))
break; // << I always hit this line - even if the user is an OfficeUser
Это работает отлично, пока я не ударил UserManager.IsInRole(). Это всегда возвращает false.
Где-то я читал, что IsInRole() не будет выполнен, если соответствующий пользователь не подписан. Но поскольку я пропускаю SignInManager.PasswordSignInAsync(), я считаю, что все должно быть хорошо.
И да, я проверил базу данных много раз и очень тщательно;) Мой тестовый пользователь и моя тестовая роль «OfficeUser» определенно назначены друг другу.
Есть ли у кого-нибудь идеи?
ДА, это работает. Большое спасибо, DSR !! Вы просто спасли мой день (и выходные :)) – Ingmar