0

我正在修改 JSP 和 ASP.Net 中会话对象的概念。我很困惑,“什么时候创建了一个实际的会话对象?” 直到最近,我还认为它是在用户登录他的帐户时创建的,但现在我在书中读到它是在用户访问您网站上的任何页面时隐式创建的。

那么它是什么时候真正创建的呢?JSP 会话与网站用户帐户会话不同吗?

如果后者是正确的,当用户实际登录他的帐户时是否创建了第二个新会话,而前一个会话被破坏了?例如:购物网站可能允许用户选择许多商品并“添加到我的购物车”。他登录后这些数据会发生什么。在销毁初始会话后是否在内部创建了一个新会话?

如果这看起来令人困惑,那么您可以指定 Session 通常在实际系统中是如何实现的(因为我是学生)?会话通常何时开始?其中存储了哪些数据?您设置的典型超时时间是多少,为什么?

我的研究:JSP 会话是抽象概念,用户帐户会话是特定于实现的。两者都不一样

4

1 回答 1

1

会话通常由

  • 生成唯一令牌,
  • 创建一个 Session 对象来保存会话数据并将其存储在由唯一令牌索引的映射中,
  • 将包含此令牌的会话 cookie 发送到浏览器。

每次来自该浏览器的请求都包含 cookie,因此容器可以从其内部会话映射中检索适当的会话。

所以是的,会话可以在用户通过身份验证之前存在,甚至根本没有身份验证。当用户通过身份验证时,他会保持相同的会话。唯一的区别是您通常在会话中添加用户 ID,以便将用户与会话相关联。

例如,您可以让匿名用户在会话中购物并将商品添加到他们的购物车中,并且仅在他们需要付款时才要求他们进行身份验证(以检索他们存储的帐户)。或者您可以让他们将商品添加到购物车中,而根本不对其进行身份验证。

于 2012-11-03T08:58:53.510 回答