【问题标题】:Securing Spring Boot Web App With Spring Security Doesn't Work使用 Spring Security 保护 Spring Boot Web 应用程序不起作用
【发布时间】:2018-02-22 12:06:42
【问题描述】:

我花了大约一整天的时间试图获得一个非常基本的 Spring Boot 应用程序,该应用程序具有 Spring 安全性并无法正常运行。我找不到一个运行时有效的代码示例。

This 示例来自 spring.io。这是我在该示例中看到的:

  1. 我从http://localhost:8080 开始并看到欢迎屏幕。
  2. 我单击指向http://localhost:8080/hello 的链接,这会将我重定向到http://localhost:8080/login
  3. 我输入 WebSecurityConfig.java 中指定的“用户”和“密码”,这会将我重定向回欢迎屏幕。我期待被重定向到http://localhost:8080/hello
  4. 当我单击指向http://localhost:8080/hello 的相同链接时,我再次进入登录屏幕。

我尝试通过@EnableWebSecurity(debug = true) 进行调试,但没有错误。

上述体验是我下载每个示例时的特有体验。诚然,我是 Spring 的新手,大概我犯了某种新手配置错误。任何帮助将不胜感激。

【问题讨论】:

    标签: spring spring-boot spring-security


    【解决方案1】:

    我下载了代码并使用 maven 运行,它运行良好。登录后,对于http://localhost:8080/hello 的所有后续页面加载,加载页面而不是再次加载登录页面,除非我当然注销。您提到的问题可能是由于(很有可能因为您提到它是地方性的)是您的浏览器可能在传输默认 JSESSIONID cookie(在第一页访问时设置并更新)时出现问题(作为良好的安全实践由 Spring 安全性)在首次登录时。对于后续访问,相同的 JSESSIONID 被发送到服务器,它是存储在服务器上的会话对象的密钥,其中包含现在经过身份验证/授权的用户。如果某些方式不将此 cookie 传输回服务器(一个原因可能是它在浏览器设置中被禁用)然后您的应用程序(受弹簧安全保护)将不知道您是已经过身份验证的用户,并将再次向您显示登录页面。例如,对于 Chrome,您可以看到 cookie 设置在设置 --> 内容设置 --> Cookies --> 允许站点保存和读取 cookie 数据(推荐)。您还可以查看成功登录后每个页面加载时传递的 cookie 标头 b y 在各自的浏览器中使用开发者工具。

    【讨论】:

      猜你喜欢
      • 2020-08-08
      • 2017-04-14
      • 2020-04-06
      • 2019-09-08
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2011-09-10
      相关资源
      最近更新 更多