ASP.NET页面生命周期 - 在什么时候强制执行SSL?

时间:2009-11-19 01:20:05

标签: asp.net ssl

我应该何时在ASP.NET页面生命周期中为安全页面强制执行SSL?

我的意思是我应该在page_load中进行吗?还是OnInit?还是其他一些功能?

我使用以下代码为某些页面强制执行SSL,但是我应该在哪里放置此代码?之前我将它放在OnInit函数中,但是这对ASP.NET向导不起作用。我是否需要先检查是否回发?

 if (!HttpContext.Current.Request.IsSecureConnection) {
                HttpContext.Current.Response.Redirect(SiteNavigation.ResolveAbsoluteUrl(true, HttpContext.Current.Request.Url.PathAndQuery));
            }

2 个答案:

答案 0 :(得分:1)

另一个选项是在应用程序之外完成此操作,并在IIS 中强制执行SSL,如果整个站点需要SSL连接。我们在IIS6中通过为同一域名创建两个站点来完成此任务。

mysite.com:80的HTTP 403重定向到网站的SSL版本。 mysite.com:443具有强制执行SSL的实际应用程序。

如果整个站点不需要SSL连接,只是登录页面或站点的其他一些孤立部分而不是Global.asax中的程序方法(Gonzalo提到)可能是最好的方法它会在页面生命周期的早期发现它。

答案 1 :(得分:-1)

如果您要重定向用户,您希望尽可能在生命周期的早期执行此操作,因为在生命周期中花费的任何cpu都将被浪费。在OnInit中进行重定向。