【发布时间】:2012-12-20 01:19:18
【问题描述】:
场景
- 我重新启动服务器和浏览器,所以没有会话数据。
- 我去 www.someurl.com 公共访问页面。我的控制器让我与此
HttpSession session=request.getSession(true);进行会话 - 我单击指向 www.someurl.com/admin 受限访问页面的平面锚链接,该页面在新选项卡中打开。 Spring Security 3 拦截了这一点并挑战凭据。我登录成功。
- 我通过 www.someurl.com 返回上一个选项卡并刷新页面。
问题
我在 www.someurl.com 的控制器中注意到的是,第 2 步和第 4 步的会话 ID 不同。看起来 Spring Security 创建了一个新会话,并且该会话现在附加到公共页面的请求。为什么会发生这种情况,我可以强制 Spring Security 使用现有会话吗?
追踪场景
- 重新启动浏览器和服务器,使会话数据不存在。
- 我去 www.someurl.com。控制器已注入请求。 request.session 为空。 getSession(true) 让我获得一个 ID 为 87B091B12F38D44C53AF0DA9E2147484 的会话。 LogService 获取请求对象并执行 getSession(true),但获取 ID 为 87B091B12F38D44C53AF0DA9E2147484 的会话,所以到目前为止一切都很好。
- 我单击 /admin。页面在新标签页中打开。我登录了。
- 我刷新了 www.someurl.com。控制器已注入请求。 request.session 不为空。会话 ID 为 547DF59035C91783D783BAEF4A15FBFF。
【问题讨论】:
标签: spring security httpsession