在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>
}
}
答案 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" />