簡體   English   中英

ASP.Net MVC 5 檢查 _Layout 的用戶角色

[英]ASP.Net MVC 5 Check User Role For _Layout

大家好,我正在嘗試使用默認設置檢查我的用戶所在的角色。 我以為在我的視圖中只需要 'User.IsInRole("User")' ,但它並不那么容易。 我想根據用戶的角色顯示某些鏈接。 這是我所擁有的,我嘗試了一些不同的選擇。 我有默認設置數據庫和一些對這部分無關緊要的添加表。 Request.IsAuthenticated 用於登錄。

我嘗試了 user.isinrole 和 request.isauthenticated 但我認為 nether 為這個實例工作

@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”在沒有用戶登錄時起作用。

您可以像這樣為 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()閱讀更多信息

這就是我最終為我的解決方案所做的

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM