[英]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
}
這就是我最終為我的解決方案所做的
@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.