首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查_Layout的ASP.Net MVC 5用户角色

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

Stack Overflow用户
提问于 2019-04-01 07:27:05
回答 2查看 1.3K关注 0票数 2

大家好,我正在尝试检查我的用户在默认设置中是什么角色。我以为在我的视图中只需要'User.IsInRole("User")‘,但这并不容易。我想根据用户的角色显示某些链接。这是我所拥有的,我尝试了几个不同的选项。我有默认的设置数据库和一些添加的表,这对这一部分并不重要。Request.IsAuthenticated用于登录。

我尝试了user.isinrole和request.isauthenticated,但在我的视图中不适用于这个实例

代码语言:javascript
复制
@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‘在没有用户登录的情况下工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-01 08:58:34

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

代码语言:javascript
复制
@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>
}
票数 3
EN

Stack Overflow用户

发布于 2019-04-01 08:34:49

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

代码语言:javascript
复制
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));
    }
}

并使用

代码语言:javascript
复制
// user must be assign to all of the roles  
if(User.IsInAllRoles("Admin","Manager","YetOtherRole"))
{
    // do something
} 

有关更多信息,请访问Usage of User.IsInRole() in a View

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55446373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档