MVC3 - 覆盖基类声明的属性

时间:2011-05-12 16:36:41

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

我们有一个基本控制器,我们所有其他控制器都继承了它,并且有一个自定义的RequireHttps属性。此自定义属性具有切换到强制SSL或依赖配置文件中的设置。基本控制器使用此属性进行修饰,并设置为依赖于配置设置,这是95%的控制器的正确行为。但是,我们有几个控制器要设置为始终需要SSL。如果我将属性应用于那些耦合控制器以强制SSL,那么RequireHttpsAttribute代码将运行两次(可能不是一个大问题,但肯定不是理想的)。

有没有办法让我在子类上使用属性声明覆盖属性声明?我怀疑我不能,但想肯定地知道。

全部谢谢

1 个答案:

答案 0 :(得分:0)

如何创建另一个自定义属性,该属性将向当前HttpContext注入一些值,表明需要SSL。然后,您将使用此属性修饰需要作为例外的控制器。然后修改自定义RequireHttps属性,在HttpContext中查找是否存在此值并强制执行SSL。

您只需确保此新过滤器将在自定义RequireHttps属性之前运行。这可以使用Order属性完成。