如何防止 Spring Security 在每个页面上都要求输入密码
Posted
技术标签:
【中文标题】如何防止 Spring Security 在每个页面上都要求输入密码【英文标题】:How to prevent Spring Security from asking for a password on every page 【发布时间】:2019-05-26 05:46:46 【问题描述】:我正在尝试为我的 REST API 实现一个基本的 Spring Security 配置,并且用户名/密码提示出现在我已允许所有请求的页面上。
这是我的安全配置:
@Override
protected void configure(HttpSecurity http) throws Exception
http
.authorizeRequests()
.antMatchers("/", "/jobs").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic();
localhost:8080/ 和 localhost:8080/jobs 应该可以访问,无需登录。任何对不同路由的请求都应该需要身份验证。 现在,当在我的浏览器中打开根目录或 /jobs 时,我得到了页面的内容,但我也被要求登录。可以简单地关闭对话框,但这很烦人。 当我打开 /test 或其他东西时,会出现登录对话框,但我没有得到内容,这是正确的行为。
如何在使用 permittAll() 的页面上消除这些对话框?
这是当前情况的截图。内容已 100% 加载。 screenshot
编辑: 我找到了解决方案,感谢 dur 提到检查请求。问题是,firefox 自动发送对 favicon.ico 文件的请求,这条路线是不允许的,这就是我得到提示的原因。
【问题讨论】:
页面上没有真正的 html,它只是纯文本。目前响应的内容只是一个临时的填充物。 或许你能找到答案here 【参考方案1】:我找到了解决方案,感谢 dur 提到检查请求。问题是,firefox 会自动发送对 favicon.ico 文件的请求,这条路线是不允许的,这就是我收到提示的原因。
在 antMatchers() 方法中添加“/favicon.ico”后,一切正常。 screenshot
【讨论】:
以上是关于如何防止 Spring Security 在每个页面上都要求输入密码的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 Spring Security 在会话中存储我的自定义 UserDetails 对象
如何在 Spring Security 中的 SSO 登录后重定向我的上一页?
如何在单页应用(spring security)中提供 CSRF Token?
如何防止使用带有 Thymeleaf 的 Spring Security 破坏 CSS 格式?