gpt4 book ai didi

java - 为什么在我登录之前创建了一个新 session ?

转载 作者:行者123 更新时间:2023-11-28 22:04:40 24 4
gpt4 key购买 nike

我创建了一个使用 Spring Security (3.2) 登录提示的 Web 应用程序。我在 Tomcat 7 中运行该应用程序。我使用 Tomcat 管理器来监视 session 。它是一个 Vaadin 应用程序,使用 Vaadin servlet。没有使用 JSP 页面。

现在...

  1. 我有一个新启动的 Tomcat,带有新部署的 .war。
  2. 我打开网络浏览器并输入该应用程序的 URL,然后按 Enter 键,这使我进入了该应用程序的登录页面。
  3. 我可以在 Tomcat 管理器中看到已经创建了 1 个 session 。请注意,我什至还没有尝试登录。
  4. 我关闭了应用程序浏览器选项卡和浏览器本身,然后重新打开(即有效删除所有 session 数据)并再次输入 url 并按回车键。
  5. 我可以在 Tomcat 管理器中看到已经创建了另一个 session 。现在共有2个 session 。请注意,我还没有尝试登录。

这是预期的行为(防止某种 session 固定攻击)还是我只是配置了错误?

最佳答案

简而言之,使用登录页面的登录进程需要创建 session 来存储目标页面。

较长的版本是登录过程(假设身份验证成功)将遵循以下几行:

  1. 用户代理请求/some/secure/page
  2. 对经过身份验证的用户进行容器检查
  3. 用户未通过身份验证,因此容器开始登录过程
  4. 容器创建 session
  5. 容器将目标页面 URL (/some/secure/page) 添加到 session
  6. 容器将用户重定向到登录页面
  7. 用户登录
  8. 容器验证凭据
  9. 容器更改 session ID(以防止 session 固定)
  10. 容器从 session 中获取目标页面 URL
  11. 容器将用户重定向到目标页面
  12. 用户代理请求目标页面
  13. 对经过身份验证的用户进行容器检查
  14. 用户已通过身份验证,因此容器显示请求的页面

如果没有 session ,容器就无法跟踪哪些(潜在的许多)页面需要用户请求的身份验证,因此无法在身份验证完成后将它们重定向到请求的页面。

关于java - 为什么在我登录之前创建了一个新 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22507590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com