繁体   English   中英

User.IsInRole("Admin") 在 _Layout.cshtml 中总是返回 false

[英]User.IsInRole("Admin") returning always false in _Layout.cshtml

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

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

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

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

添加到您的网络配置

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM