是否可以为所有控制器全局设置[Authorize]属性?

时间:2014-03-23 21:54:42

标签: asp.net-mvc asp.net-mvc-3

目前,将[授权]放在控制器类或特定操作上。是否可以集中为所有控制器设置[Authorize]属性,比如防止未经身份验证的使用。之后,可以在特定控制器上定义更具体的[授权]属性,例如

[Authorize(Roles="Admin, SuperUser")]

感谢。

2 个答案:

答案 0 :(得分:36)

这应该有效(放入Application_Start):

GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "Admin, SuperUser" });

答案 1 :(得分:8)

另一种选择是让控制器继承自基础控制器类,并将AuthorizeAttribute放在那里。

Take a look at this answer

然后,您可以使用特定角色,用户等覆盖子类的基本AuthorizeAttribute。

[Authorize]
public class BaseController : Controller{}

public class ChildController: BaseController{}

[Authorize(Role = "Role A")]
public class AnotherChildController: BaseController{}