study__chengxuyuan 2018-12-17 12:39 采纳率: 0%
浏览 3464

WebMvcConfigurationSupport 拦截器失效

class WebMvcConfig extends WebMvcConfigurationSupport {

@Override
protected void addInterceptors(InterceptorRegistry registry) {

    registry.addInterceptor(new SecurityIntercepter(ac)).excludePathPatterns("/tokens").addPathPatterns("/**");
    super.addInterceptors(registry);
}

}
这里面添加拦截器,拦截不到url。请问原因

使用的是xml零配置之WebMvcConfigurationSupport,也就是相当于MVC的配置文件。里面重写了addInterceptors。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-11 19:20
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Spring Boot中,WebMvcConfigurationSupport是一个用于配置web MVC功能的基础类。它提供了基本的设置和注解,但不包含所有高级的功能或特性。如果你遇到问题,可能是因为你的项目缺少某些必要的依赖或者配置。

    这里的问题可能是由于你没有正确地配置了拦截器。在XML配置中,你需要为每个拦截器指定一个名字,并且这个名称必须是唯一的。如果多个拦截器具有相同的名称,那么它们将被合并到同一个实例中。因此,确保你为每一个拦截器都提供了一个唯一的名称是非常重要的。

    此外,在你的SecurityIntercepter类中,excludePathPatterns方法应该被用来排除不需要处理的URL路径。例如:

    public class SecurityIntercepter implements HandlerInterceptorAdapter {
        private static final String[] EXCLUDE_PATHS = new String[]{"/admin", "/login"};
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            for (String path : EXCLUDE_PATHS) {
                if (request.getRequestURI().startsWith(path)) {
                    return true;
                }
            }
    
            // 如果所有的URL都被排除,那么返回false来阻止请求继续进行。
            return false;
        }
    }
    

    最后,你需要在@Bean方法中注入这个拦截器:

    @Bean
    public SecurityIntercepter securityInterceptor() {
        return new SecurityIntercepter();
    }
    

    现在,当你运行你的应用程序时,你应该会看到拦截器已经成功地应用了。

    评论

报告相同问题?