1

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

            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>
4

1 回答 1

1

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

要解决此问题,您可以

  1. 在下一页进行重定向

    或者

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

于 2013-02-13T01:19:49.847 回答