相关疑难解决方法(0)

为什么IsInRole总是返回false?

我正在使用ASP.NET Identity 2.0和EF 6.1.1构建MVC5应用程序.

这是我当前的Login方法的一部分:

    [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
Run Code Online (Sandbox Code Playgroud)

这个工作正常,直到我点击UserManager.IsInRole().这总是返回false.

在某处我读到IsInRole()如果相应的用户没有登录就会失败.但是因为我传递了SignInManager.PasswordSignInAsync(),我相信这应该没问题.

是的,我已经多次检查数据库并且非常小心;)我的测试用户和我的测试角色"OfficeUser"肯定是相互分配的.

有人有想法吗?

ef-code-first asp.net-identity

1
推荐指数
1
解决办法
1253
查看次数

标签 统计

asp.net-identity ×1

ef-code-first ×1