不想努力的程序员 2024-07-02 15:43 采纳率: 52.1%
浏览 27
已结题

springSecurity6.3.0放行接口没有效果

在使用springSecurity时,配置了放行接口,但是还是被拦截器拦截了,环境是springboot3.3.0具体代码如下

 @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                // 禁用CSRF保护,如果你的应用需要则启用并配置
                .csrf(AbstractHttpConfigurer::disable)

                .authorizeHttpRequests(auth -> auth

                        .requestMatchers("/admin/user/insertItem").permitAll() // 允许访问认证端点

                        .anyRequest().authenticated() // 其他请求需要认证
                )
                // 无状态会话
                .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))

                // 添加JWT过滤器
                .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class);
        http.exceptionHandling(exception -> exception.authenticationEntryPoint(customAuthenticationEntryPoint));
        http.exceptionHandling(exception -> exception.accessDeniedHandler(customAccessDeniedHandler));
        return http.build();
    }

已经配置了放行接口/admin/user/insertItem 但是在访问的时候还是进入了jwtAuthFilter中,控制台打印信息如下

img

网上有说可以使用WebSecurityCustomizer进行放行接口,这个也试了试,但是没有效果,而且启动的时候就警告了,推荐使用 .requestMatchers("/admin/user/insertItem").permitAll()这种,现在如果不在filter中进行处理,如何解决呢?

  • 写回答

3条回答 默认 最新

  • 百锦再@新空间代码工作室 全栈领域优质创作者 2024-07-02 15:43
    关注

    Gpt辅助回答,我来为你把关

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeHttpRequests()
                .antMatchers("
    /admin/user/insertItem"
    ).permitAll() .anyRequest().authenticated() .and() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class) .exceptionHandling() .authenticationEntryPoint(customAuthenticationEntryPoint) .accessDeniedHandler(customAccessDeniedHandler);
    return http.build();
    }

    在上面的代码中,通过antMatchers("
    /admin/user/insertItem"
    ).permitAll()
    配置了放行接口/admin/user/insertItem,确保这个路径不会被拦截器拦截。希望这个代码可以解决你的问题。如果不行,可以检查一下是否有其他地方也对这个接口进行了拦截处理。


    有问题你别着急,评论留言都可以,看到马上就回复,尽量及时补充齐
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 创建了问题 7月2日

悬赏问题

  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音