登录前会话ID?

Posted

技术标签:

【中文标题】登录前会话ID?【英文标题】:Pre-login session id? 【发布时间】:2013-12-11 08:50:15 【问题描述】:

我在 Tomcat 上有一个带有表单身份验证的简单 webapp,并注意到每当用户进入到登录页面时,都会设置一个“预登录”JSESSIONID,之前甚至发生任何登录尝试

这是 Tomcat 中的默认行为吗?为什么 Tomcat 生成一个 JSESSIONID 只是为了加载一个登录页面?它不应该在实际登录后生成任何会话 ID only 吗? (不是因为有人只是加载登录页面!)

注意:我应该提一下,我的整个 webapp(登录页面和所有)都是通过https托管的;它的任何部分都没有通过http公开。我也不使用 JSP。登录后,Tomcat 生成一个 second JSESSIONID,与第一个不同。这就是用户在剩余会话中使用的那个。

但是为什么它首先设置一个“预登录”JSESSIONID

【问题讨论】:

【参考方案1】:

如果您使用 Tomcat 的形式认证方式,它必须将初始请求存储在某处以执行认证的无状态重定向。之后,它将重新评估请求。 SavedRequest 保存在 session 中。您应该禁用 changeSessionIdOnAuthentication 标志。

【讨论】:

我知道 JSP 默认创建会话,而我使用 JSP! @ManRow,我改变了答案。 啊,为了澄清一下,“SavedRequest”只是用户在服务器向他/她显示登录屏幕之前尝试发出的请求?那么,如果我理解正确,登录屏幕将发布到j_security_check,然后服务器将通过转发到用户的“SavedRequest”来兑现成功的登录尝试? @ManRow,是的,您可以查看提供的链接,您会看到的。 谢谢!正是我想要的:)

以上是关于登录前会话ID?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 会话变量没有传递到我的登录页面,但会话 ID 是

我的会话 ID 是在登录前生成的吗?

登录asp.net后如何更改会话ID

Fastlane:如何自动获取 Apple ID 的登录会话?

Rails 登录重置会话

当会话 ID 已知但无法启动会话时删除会话变量