可能重复:
ASP.NET MVC3 Role and Permission Management -> With Runtime Permission Assignment
假设我在控制器中有ActionResult Members
,只允许成员访问它。通常,我只会在操作上添加[Authorize(Roles = "Members")]
属性,以便仅允许Members
角色中经过身份验证的用户访问它。
我是否可以允许管理员(或其他)在将来更改它,让我们说[Authorize(Roles = "Members, PotentialMembers ")]
(这将允许角色Members
和PotentialMembers
中的用户访问这个动作?
由于
答案 0 :(得分:0)
不,您不能使用AuthorizeAttribute执行此操作。您传递给它的角色很难编译到应用程序中。
但是还有其他方法可以解决这个问题。您可以编写自己的授权过滤器。或者你可以创建一个覆盖OnAuthorization或类似的基类。
答案 1 :(得分:0)
不幸的是,您不能使用默认属性执行此操作。但是,您可以通过继承Authorize来编写自己的属性(或者您可以在Web上轻松获取Authorize的来源)。
从那里开始,您必须设计一种机制,以便a)通过某种接口存储每个控制器允许的角色,以及b)在自定义过滤器属性中使用这些映射来允许/拒绝访问。
如果你这样做,我建议在应用程序启动时加载映射,并使用内存管理器来指示配置更改。