目前我的控制器如下所示:
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
然后我会创建一个自定义类来验证登录的用户是否在该角色中。
有关如何处理此问题的任何建议?
答案 0 :(得分:1)
当然,你只需要从ActionFilterAttribute
派生。
public class AdministratorRequiredAttribute : ActionFilterAttribute
{
override OnActionExecuting() { }
override OnActionExecuted() { }
override OnResultExecuting() { }
override OnResultExecuted() { }
}
您可以覆盖OnActionExecuting
方法以插入逻辑来检查用户的身份验证;如果还不够,可以使用上下文对象将用户重定向到action方法之外。