0

在 layout.cshtml 我正在检查当前用户是否是管理员。如果是这样,则显示不同的菜单。但是,即使使用管理员登录,它也总是返回 false。我正在使用下面的代码:

@if (User.Identity.IsAuthenticated == false)
{
    <li><a href="\Users\Login">Log in</a></li>
    <li><a href="\Users\Register">Register</a></li>
}

else
{
    <li><a href="\Users\Logout">Log out</a></li>
    if (User.IsInRole("Admin"))
    {
        <li><a href="\Users\List">Users List</a></li>
    }
}
4

2 回答 2

1

我刚刚发现错误是什么,相信我,这真的很愚蠢。在我存储在 SSMS 中的数据库中,角色“Admin”和“User”被存储为“Admin”和“User”,这意味着默认情况下会添加额外的空格。因此,当我将 if (User.IsInRole("Admin")) 更改为 if (User.IsInRole("Admin")) 时,它起作用了..

于 2019-12-27T12:04:46.683 回答
0

检查您是否启用了角色管理器。

在您的 web.config 或常量 System.Web.Security.Roles.Enabled

添加到您的网络配置

<system.web>
    <roleManager enabled="true" />
于 2019-12-27T11:31:47.813 回答