ASP.从控件强制SSL

本文关键字:SSL 控件 ASP | 更新日期: 2023-09-27 18:12:31

首先,我想说的是,我提出的任何解决方案都必须适用于。net 2.0,因为这是我的项目所针对的框架。

我有ASP。. NET网站,我使用代码强制页面进入SSL或不,而不是web.config。基本上每个页面都被强制为非SSL,除非页面继承了我创建的允许页面定义属性来强制SSL的接口。我有一个方法,它在页面加载时运行,查看页面是否继承了这个接口,然后检查这个属性的值。这对我们来说都很好,但我想将这种功能扩展到自定义服务器或用户控件。

我最初只考虑让控件使用相同的接口,但我很快发现递归地查看所有Page的控件集合非常耗时,并且如果嵌套太深可能导致堆栈溢出。

接下来,我尝试创建一个可以用来装饰控件并在Attribute的CTOR中运行一些逻辑的Attribute,但这失败了,因为我不能始终强制Attribute的CTOR运行,因为我必须在控件上调用GetCustomAttributes()方法,这将我带回到递归和那里的问题。

有没有人知道一种方法,我可以"装饰"一个类的接口,属性或类似的,并将其绑定到一些逻辑,我可以运行一致时,类的实例化,在。net 2.0?我想我已经确认我可以使用页面的项目集合(或HttpContext的项目集合)来存储一个"ForceSSL"值,然后我可以在页面加载上查找并根据需要重写URL。我想弄清楚的诀窍是如何简单地触发它。

我意识到我可以有一个全局方法,如Organization.Global.Utilities.ForceSSL()做这种类型的事情,但我希望有某种"装饰"类型的模式,我可以用它来调用这个逻辑/方法。

ASP.从控件强制SSL

让控件检查它的父页面怎么样?

this.Page

然后确定它的类型是否需要SSL然后重定向,强制403等

对于控件来说,这是一个奇怪的行为。