You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3中permitAll()失效问题及Postman认证疑问

问题解决指南

1. 修复"Encoded password does not look like BCrypt"错误

你的密码存储格式存在问题:

  • BCrypt哈希值本身以$2a$/$2b$/$2y$开头,不需要额外添加{bcrypt}前缀。当前存储的{bcrypt}$2a$12$2mERuojKpXO8N2qX2OXmBOAIuVM6pSImxlcrrJXHNyI3iowgHe5Zi会被BCryptPasswordEncoder判定为无效格式,因为它不符合标准BCrypt哈希的开头规则。
  • 修正方式:将MySQL users表中password字段的值改为去掉{bcrypt}前缀的部分,即$2a$12$2mERuojKpXO8N2qX2OXmBOAIuVM6pSImxlcrrJXHNyI3iowgHe5Zi。

若确实需要保留前缀(比如兼容多种加密算法),则需配置DelegatingPasswordEncoder来识别前缀,示例代码:

@Bean
public PasswordEncoder passwordEncoder() {
    Map<String, PasswordEncoder> encoders = new HashMap<>();
    encoders.put("bcrypt", new BCryptPasswordEncoder());
    return new DelegatingPasswordEncoder("bcrypt", encoders);
}

但更推荐直接存储纯BCrypt哈希值,减少额外配置成本。

2. 让permitAll()对POST请求的/api/auth/**生效

检查你的SecurityFilterChain配置,确保规则顺序和请求匹配逻辑正确:

  • 规则顺序:Spring Security按配置顺序匹配规则,必须将/api/auth/**的放行规则放在所有需要认证的规则之前。
  • 明确指定POST方法,避免匹配所有请求类型。

正确配置示例:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests(auth -> auth
            // 优先放行POST请求的/api/auth/**端点
            .requestMatchers(HttpMethod.POST, "/api/auth/**").permitAll()
            // 其余所有请求需认证
            .anyRequest().authenticated()
        )
        .formLogin(form -> form.permitAll()) // 若使用表单登录则保留,其他认证方式按需调整
        .csrf(csrf -> csrf.disable()); // 开发环境可临时禁用,生产环境按需配置CSRF防护

    return http.build();
}

注意事项:

  • 确保requestMatchers的路径和请求方法与实际端点完全匹配。
  • 若启用CSRF保护,POST请求需携带CSRF令牌,否则会被拦截。

3. Postman中发送认证密码的方法

根据你的认证方式选择对应操作:

表单登录场景

  • 在Postman中选择POST方法,输入认证端点(如/api/auth/login)。
  • 切换到Body标签,选择x-www-form-urlencoded格式。
  • 添加两个键值对:
    • username: 你的用户名
    • password: 明文密码(不是加密后的哈希值)
  • 点击发送即可。

Basic认证场景

  • 在Postman中切换到Authorization标签,类型选择Basic Auth。
  • 输入用户名和明文密码,Postman会自动将其编码为Base64(username:password)并添加到请求头的Authorization字段中。
  • 发送请求即可。

内容的提问来源于stack exchange,提问作者The Beast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:52:47