java - SpringBoot fügt einen benutzerdefinierten Interceptor hinzu, ruft ihn jedoch nicht auf
PHP中文网
PHP中文网 2017-06-30 09:54:03
0
4
947

1. Frage:

要添加一个自定义处理Token的问题,现在实现了方法,却发现拦截器没有被调用。 我是在自定义的HandlerInterceptorAdapter里面重写了preHandle方法。并把这个自定义的HandlerInterceptorAdapter添加到了自定义的WebMvcConfigurerAdapter,在WebMvcConfigurerAdapter添加@Configuration注解,但是却没有被调用!

2. Code:
AccessTokenVerifyInterceptor des benutzerdefinierten HandlerInterceptorAdapter:

@Component public class AccessTokenVerifyInterceptor extends HandlerInterceptorAdapter { private Logger logger = LoggerFactory.getLogger(AccessTokenVerifyInterceptor.class); @Autowired private FFAccessTokenService tokenService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // TODO Auto-generated method stub logger.info("AccessToken executing ..."); return true; } }

Angepasste WebMvcConfigurerAdapter-Klasse FFWebMvcConfigurer:

@Configuration public class FFWebMvcConfigurer extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { // TODO Auto-generated method stub registry.addViewController("/error").setViewName("404.html"); registry.setOrder(Ordered.HIGHEST_PRECEDENCE); super.addViewControllers(registry); } @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.setUseSuffixPatternMatch(false); super.configurePathMatch(configurer); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AccessTokenVerifyInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/access-token"); super.addInterceptors(registry); System.out.println("开始开始咯。。。。"); } }

3. Ich hoffe, dass mir alle Meister einen Rat geben können, danke!

PHP中文网
PHP中文网

认证高级PHP讲师

Antworte allen (4)
Peter_Zhu

/**去掉一个*试试

    扔个三星炸死你

    在启动类加上
    @ServletComponentScan

      阿神

      那你应该把 HandlerInterceptorAdapter 贴出来看看
      还有就是 2 中那个 @Component 注解 是没有意义的。

        学霸

        不会啊,按照你的代码写了一个简单的Demo,拦截器是可以调用到的。

        @Configuration public class FFWebMvcConfigurer extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/error").setViewName("404.html"); registry.setOrder(Ordered.HIGHEST_PRECEDENCE); super.addViewControllers(registry); } @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.setUseSuffixPatternMatch(false); super.configurePathMatch(configurer); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AccessTokenVerifyInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/access-token"); super.addInterceptors(registry); System.out.println("开始开始咯。。。。"); } }
        public class AccessTokenVerifyInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle..."); return true; } }

          Neueste Downloads
          Mehr>
          Web-Effekte
          Quellcode der Website
          Website-Materialien
          Frontend-Vorlage
          Über uns Haftungsausschluss Sitemap
          Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!