【问题标题】:ASP.NET MVC Authorize attribute with a parameter带有参数的 ASP.NET MVC 授权属性
【发布时间】: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 属性如何利用这一点?
【问题讨论】:
标签:
c#
asp.net
asp.net-mvc
windows-authentication
authorize-attribute
【解决方案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);
}
}