为MVC3设置自定义授权角色

时间:2011-08-24 21:09:05

标签: c# asp.net-mvc-3 authorize

目前我的控制器如下所示:

public class ProductBrandsController : Controller

我在线阅读我可以将[Authorize]装饰器应用于每个Action,也可以应用于整个Controller本身。

有没有办法声明自定义装饰器所以我会这样称呼它:

[Authorize(Roles = "God")]
public class ProductBrandsController : Controller

或许这太麻烦了。我不介意创建一个新的装饰器并像这样调用它:

[Administrator]
public class ProductBrandsController : Controller

//Or 

[ContentManager]
public class ProductBrandsController : Controller

然后我会创建一个自定义类来验证登录的用户是否在该角色中。

有关如何处理此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

当然,你只需要从ActionFilterAttribute派生。

 public class AdministratorRequiredAttribute : ActionFilterAttribute
 {
      override OnActionExecuting() { }
      override OnActionExecuted() { }
      override OnResultExecuting() { }
      override OnResultExecuted() { }
 }

您可以覆盖OnActionExecuting方法以插入逻辑来检查用户的身份验证;如果还不够,可以使用上下文对象将用户重定向到action方法之外。