ASP.NET MVC 2中的区域属性?

时间:2010-09-19 09:40:40

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

我的应用中的“管理”区域包含一堆控制器,并且在所有控制器上放置[Authorize]属性有点重复。有没有办法告诉框架某个区域内的所有控制器都应该具有某些属性?

编辑:在这种情况下,继承不是解决方案。首先,控制器已经从一个自定义类继承,其次,它应该是关于装饰类,而不是继承它们。

3 个答案:

答案 0 :(得分:1)

您可以创建一个基本控制器,该区域中的所有控制器都使用[Authorize]属性派生并装饰它。

答案 1 :(得分:1)

MVC 3有一个名为全局动作过滤器的新功能,它非常适合你正在做的事情。由于您可能尚未使用MVC 3,因此您还可以通过this example在早期版本的MVC中实现全局操作过滤器。只需自定义解决方案以过滤检查您是否位于当前正在执行的请求的“管理”区域,然后应用您的授权属性。

这将允许您执行此操作,而无需根据您的请求应用公共基类。

答案 2 :(得分:0)

有四个选项,

  1. 创建一个单独的基本控制器并使管理部门继承它
  2. 将Authorize Attribute添加到控制器类而不是每个方法/ Actrion
  3. 单独装饰
  4. 编写自己的授权逻辑并将其添加到当前的基本控制器