java - SpringBoot ajoute un intercepteur personnalisé mais ne l'appelle pas
PHP中文网
PHP中文网 2017-06-30 09:54:03
0
4
1005

1.Question :

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

2. Code :
AccessTokenVerifyInterceptor de HandlerInterceptorAdapter personnalisé :

@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;    
    }
    
}

Classe WebMvcConfigurerAdapter personnalisée 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. J'espère que tous les maîtres pourront me donner quelques conseils, merci !

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(4)
Peter_Zhu

/**Supprimez-en un* et essayez-le

扔个三星炸死你

Ajoutez
@ServletComponentScan

à la classe de démarrage
阿神

Ensuite, vous devriez publier le HandlerInterceptorAdapter et y jeter un œil
De plus, l'annotation @Component en 2 n'a aucun sens.

学霸

Non, j'ai écrit une démo simple basée sur votre code, et l'intercepteur peut être appelé.

@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;
    }

}

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!