【发布时间】:2014-03-23 21:54:42
【问题描述】:
目前将 [Authorize] 放在控制器类或特定操作上。是否可以为所有控制器集中设置 [Authorize] 属性,例如防止未经身份验证的使用。然后可以在特定控制器上定义更具体的 [Authorize] 属性,例如
[Authorize(Roles="Admin, SuperUser")]
谢谢。
【问题讨论】:
-
您考虑过使用动作过滤器吗?
目前将 [Authorize] 放在控制器类或特定操作上。是否可以为所有控制器集中设置 [Authorize] 属性,例如防止未经身份验证的使用。然后可以在特定控制器上定义更具体的 [Authorize] 属性,例如
[Authorize(Roles="Admin, SuperUser")]
谢谢。
【问题讨论】:
这应该可以工作(放入 Application_Start):
GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "Admin, SuperUser" });
【讨论】:
另一种选择是让控制器从基控制器类继承,并将 AuthorizeAttribute 放在那里。
然后您可以覆盖具有特定角色、用户等子类的基本 AuthorizeAttribute。
[Authorize]
public class BaseController : Controller{}
public class ChildController: BaseController{}
[Authorize(Role = "Role A")]
public class AnotherChildController: BaseController{}
【讨论】: