【发布时间】:2010-11-14 16:02:29
【问题描述】:
如果我想保持 HTTP 和 HTTPS 之间的会话,我应该怎么做。在我网站的公共区域中,有些页面是 HTTP,有些是 HTTPS,但我想保持两者的共同会话..
【问题讨论】:
-
如果你这样做了,那是不是意味着你实际上是在取消你的 https 的任何有效性?
如果我想保持 HTTP 和 HTTPS 之间的会话,我应该怎么做。在我网站的公共区域中,有些页面是 HTTP,有些是 HTTPS,但我想保持两者的共同会话..
【问题讨论】:
一旦您的用户通过身份验证,无论他们使用 HTTP 还是 HTTPS 访问页面,他们都将继续拥有相同的会话 cookie,直到过期。确保在会话 cookie 上使用加密,以便在通过不安全的协议传递它时更难破解。您可能想查看session hijacking 上的维基百科文章以了解更多信息。
【讨论】:
除了默认的“In Proc”之外,您可以使用 ASP.NET 中的许多会话状态模式(可以在 web.config 中配置):
StateServer 模式,它将会话状态存储在称为 ASP.NET 状态服务的单独进程中。这可确保在重新启动 Web 应用程序时保留会话状态,并且还使会话状态可用于 Web 场中的多个 Web 服务器。
SQLServer 模式将会话状态存储在 SQL Server 数据库中。这可确保在重新启动 Web 应用程序时保留会话状态,并且还使会话状态可用于 Web 场中的多个 Web 服务器。
自定义模式,可让您指定自定义存储提供程序。
见ASP.NET Session-State Modes on MSDN。我还没有针对 HTTPS 进行过测试,但希望 StateServer 或 SQLServer 可以促进这一点。
【讨论】:
每个用户的每个应用程序维护一个会话。因此,如果您有一个应用程序有一些页面通过 https 和一些通过 http 提供服务,那么您不必担心从 https 移动到 http 时会创建新会话,反之亦然。
【讨论】: