ASP.Net MVC 5 检查用户角色 _Layout



大家好,我正在尝试使用默认设置检查我的用户所处的角色。我以为我只需要"User.IsInRole("User"(",但这并不容易。我想根据用户的角色显示某些链接。这是我所拥有的,我尝试了几种不同的选择。我有默认设置数据库和一些添加的表,这些表对这部分无关紧要。Request.IsAuthentication适用于登录。

尝试了user.isinrole和request.isauthentication,但下界用我的观点适用于这个实例

@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"在没有用户登录时起作用。

你可以像这样为主体添加扩展方法

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));
    }
}

并使用

// user must be assign to all of the roles  
if(User.IsInAllRoles("Admin","Manager","YetOtherRole"))
{
    // do something
} 

阅读更多信息,请参阅 User.IsInRole(( 在视图中的使用

这就是我最终为我的解决方案所做的

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

相关内容

  • 没有找到相关文章

最新更新