带有参数的 ASP.NET MVC 授权属性
Posted
技术标签:
【中文标题】带有参数的 ASP.NET MVC 授权属性【英文标题】:ASP.NET MVC Authorize attribute with a parameter 【发布时间】:2014-04-26 11:24:29 【问题描述】:我开始用
装饰我的控制器类[Authorize(Roles = @"DOMAIN\ADGroup")]
将显式字符串更改为从数据库收集角色分配的参数的最佳方法是什么,从而允许管理员区域可以灵活地进行角色分配。
例如说我有三个角色,为了争论
只读 读写 管理员我想将这些角色映射到多个 AD 组
例如
只读 --> DOMAIN\Group1, DOMAIN\Group2, DOMAIN\Group3 读写--> DOMAIN\GroupWrite, DOMAIN\GroupManagers 管理员 --> DOMAIN\DomainAdmins这将是可编辑的,我可以修改从角色到我在应用程序管理区域中选择的任何 AD 组的映射。
我的 Authorize 属性如何利用这一点?
【问题讨论】:
【参考方案1】:您可以扩展AuthorizeAttribute
类。我是这样做的:
public class ExtendedAuthorizeAttribute : AuthorizeAttribute
protected string permission;
protected string group;
public ExtendedAuthorizeAttribute(string Permission, string Group)
permission = Permission;
group = Group;
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
var can = PermissionManager.Can(httpContext.User, permission, group);
if(can.HasValue)
return can.Value;
return base.AuthorizeCore(httpContext);
【讨论】:
【参考方案2】:Make your own role provider 根据当前用户的 AD 角色返回您的 ReadOnly 等角色列表。然后,您可以使用 Authorize 属性来引用这些角色。
【讨论】:
以上是关于带有参数的 ASP.NET MVC 授权属性的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 表单身份验证 + 授权属性 + 简单角色
ASP .NET MVC 中的 Authorize 属性是不是用于身份验证和授权?