ASP.Net MVC 5 检查 _Layout 的用户角色
ASP.Net MVC 5 Check User Role For _Layout
大家好,我正在尝试检查我的用户在默认设置中的角色。
我以为在我的视图中我只需要 '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' 在没有用户登录时有效。
您可以像这样为 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>
}
大家好,我正在尝试检查我的用户在默认设置中的角色。 我以为在我的视图中我只需要 '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' 在没有用户登录时有效。
您可以像这样为 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>
}