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

Spring Security 5.8中如何串联oauth2ResourceServer与oauth2Login?

问题解决:Spring Security 配置无令牌重定向登录、有令牌JWT验证

你遇到的Cannot resolve method 'and' in 'HttpSecurity'报错,是因为Spring Security 5.4版本开始推荐使用Lambda式配置风格,这种写法下不再需要用.and()连接不同配置块,直接链式调用HttpSecurity的方法即可。

正确配置代码

http.authorizeHttpRequests(authorizeRequests ->
        authorizeRequests
                .requestMatchers("/v1/**").permitAll() // 放行无需认证的路径,建议前置避免规则覆盖
                .requestMatchers("/", "/admin/**").authenticated() // 需要认证的路径
    )
    .csrf(csrf -> csrf.ignoringRequestMatchers("/admin/**")) // 忽略指定路径的CSRF校验
    .oauth2ResourceServer(oauth2 -> 
        oauth2.jwt(jwt -> jwt.decoder(jwtDecoder())) // 配置JWT解码器处理Bearer令牌
    )
    .oauth2Login(oauth2 -> 
        oauth2.userInfoEndpoint() // 配置OAuth2登录的用户信息端点
    );

配置说明

  1. 路径权限规则:将permitAll的路径放在前面,避免被后续authenticated规则覆盖,确保/v1/**始终放行。
  2. CSRF配置:通过Lambda直接配置忽略/admin/**的CSRF校验,无需.and()衔接。
  3. OAuth2资源服务器:配置JWT解码器后,当请求携带Bearer令牌时,Spring Security会自动用该解码器验证令牌有效性。
  4. OAuth2登录:当请求未携带有效令牌时,Spring Security会自动触发OAuth2登录流程,重定向到授权服务器的登录页面,完成登录后再返回原请求路径。

该配置完全满足你的需求:无令牌时重定向登录,有令牌时用JWT解码器验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:17:23