User.IsInRole(“ Admin”)在_Layout.cshtml中始终返回false

时间:2019-12-27 10:57:05

标签: c# web isinrole

在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>
    }
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

添加到您的webconfig

<system.web>
    <roleManager enabled="true" />