35 .net c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4
我知道检查用户是否在角色中的一个好方法是:
if (User.IsInRole("Admin"))
{
}
Run Code Online (Sandbox Code Playgroud)
但是,如何检查我的用户是否处于"作者","管理员"或"超级"角色之一?有没有办法在不为每个角色编写"User.IsInRole"的情况下执行此操作?
mat*_*mmo 46
编辑:没有编码每个角色,做一个LINQ扩展方法,如下所示:
private static bool IsInAnyRole(this IPrincipal user, List<string> roles)
{
var userRoles = Roles.GetRolesForUser(user.Identity.Name);
return userRoles.Any(u => roles.Contains(u));
}
Run Code Online (Sandbox Code Playgroud)
使用方法请:
var roles = new List<string> { "Admin", "Author", "Super" };
if (user.IsInAnyRole(roles))
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
或者没有扩展方法:
var roles = new List<string> { "Admin", "Author", "Super" };
var userRoles = Roles.GetRolesForUser(User.Identity.Name);
if (userRoles.Any(u => roles.Contains(u))
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*ner 44
没有内置的方法来检查用户是否处于多个角色,但创建一个很好的扩展方法来为您处理它是非常简单的:
public static bool IsInAnyRole(this IPrincipal principal, params string[] roles)
{
return roles.Any(principal.IsInRole);
}
Run Code Online (Sandbox Code Playgroud)
用法是:
if (User.IsInAnyRole("Admin", "Author", "SuperUser"))
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29899 次 |
| 最近记录: |