【问题标题】:ASP.NET page lifecycle - at what point does one enforce SSL?ASP.NET 页面生命周期——在什么时候强制执行 SSL?
【发布时间】:2010-12-18 03:14:36
【问题描述】:

我应该在什么时候对 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));
            }

【问题讨论】:

    标签: asp.net ssl


    【解决方案1】:

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

    mysite.com:80 有一个 HTTP 403 重定向到该站点的 SSL 版本。 mysite.com:443 具有实施 SSL 的实际应用程序。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • -1 问题说他试过OnInit,效果不好。
      • 它工作正常,实际上。棘手的部分是设计者可能会尝试删除它,因为 OnInit 通常位于自动生成的代码块中。只需确保在 VS 尝试删除代码时重新添加代码。这很简单:)
      猜你喜欢
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      相关资源
      最近更新 更多