[英]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.