为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
猛跑小猪 2022-11-21 15:58:53
大家好,我正在尝试检查我的用户在默认设置中的角色。我以为在我的视图中我只需要 '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' 起作用。
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您可以像这样为 Principal 添加扩展方法


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()阅读更多信息



查看完整回答
反对 回复 2022-11-21
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

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


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

}


查看完整回答
反对 回复 2022-11-21
  • 2 回答
  • 0 关注
  • 61 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信