作为管理员的IsInRole未验证为true

时间:2013-02-12 21:42:28

标签: c# asp.net asp.net-mvc

如果他们是管理员,我想将登录用户重定向到管理页面,

            if (User.IsInRole("Administrator"))
            {
                return RedirectToAction("AdminLayout", "Home");
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }

但始终会执行else的返回。

在数据库中,我插入了一个用户名为“admin”并带有UserId=1密码“admin”

在角色表中我有RoleId=1RoleName=Administrator

在UsersInRoles表中我有RoleId=1UserId=1

更新

在web.config中,

   <roleManager enabled="true" defaultProvider="SimpleRoleProvider">
        <providers>
        <clear/>
        <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
      </providers>
    </roleManager>

1 个答案:

答案 0 :(得分:1)

您何时尝试重定向?如果它在下一页加载之前,User对象将无法解析。在代码中设置断点,我想您会发现Usernull。当然,null永远不会担任管理员角色。

要解决此问题,您可以

  1. 在下一页上进行重定向

    或者

  2. 从登录过程中获取用户名,然后找到登录用户并检查角色。