大家好,我正在尝试检查默认设置下用户的角色。 我以为我只需要在View中使用'User.IsInRole(“ User”)',但这并不容易。 我想显示某些链接,具体取决于用户的角色。 这是我所拥有的,我尝试了几种不同的选择。 我有默认的安装数据库和一些添加的表,对于本部分来说都没有关系。 Request.IsAuthenticated可用于登录。
我尝试了user.isinrole和request.isauthenticated,但是我用我的观点为该实例工作了
@if (Request.IsAuthenticated)
{
<li class="nav-item">
<a class="nav-link" href="#">Assign Roles</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">View Roles</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Reset Password</a>
</li>
} else if (Request.IsAuthenticated && User.IsInRole("User"))
{
<li class="nav-item">
<a class="nav-link" href="#">user Else clause</a>
</li>
} else if (Request.IsAuthenticated && User.IsInRole("Guest"))
{
<li class="nav-item">
<a class="nav-link" href="#">guest Else clause</a>
</li>
} else
{
<li class="nav-item">
<a class="nav-link" href="#">else else!! Else clause</a>
</li>
}
当没有用户登录时,“ else”有效。
答案 0 :(得分:1)
您可以像这样为Principal添加扩展方法
setState()
并使用
public static class PrincipalExtensions
{
public static bool IsInAllRoles(this IPrincipal principal, params string[] roles)
{
return roles.All(r => principal.IsInRole(r));
}
public static bool IsInAnyRoles(this IPrincipal principal, params string[] roles)
{
return roles.Any(r => principal.IsInRole(r));
}
}
答案 1 :(得分:1)
这就是我最终为解决方案所做的
@if (User.IsInRole("User"))
{
<li class="nav-item">
<a class="nav-link" href="#">user Else clause</a>
</li>
}
@if (User.IsInRole("Guest"))
{
<li class="nav-item">
<a class="nav-link" href="#">guest Else clause</a>
</li>
}