MVC3 - 重写基类声明上的属性



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

有什么方法可以用子类上的属性声明覆盖基类上的属性声明吗? 我怀疑我不能,但想知道确定。

谢谢大家

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

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

最新更新