如何防止 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 格式?

授权后返回上一页,Spring Security AuthenticationSuccessHundler

防止 Spring Security 在登录/注销后进行 302 重定向