登录前会话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?的主要内容,如果未能解决你的问题,请参考以下文章