2013-05-23 24 views
8

iyi günler. İçinde bir yay mvc uygulaması ve 2 kontrol cihazı var. İlk denetleyici (PublicController) tüm kullanıcıların isteklerini işleyebilir, Second (PrivateController) sadece yetkili kullanıcıları işleyebilir. Bahar HandlerInterceptor haritalama

Bu yüzden benim LoggerInterceptor tüm kontrolörün isteklerini işlemek gerekir ve benim AccessInterceptor sadece PrivateController 'ın isteklerini işlemek için iki Handler Interceptor`s
@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages="webapp.base.package") 
public class WebApplicationConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(new LoggerInterceptor()); 
     registry.addInterceptor(new AccessInterceptor()); 
    } 

} 

uyguladı. Interceptors, Controllers için harita bilmiyorum

cevap

20

Sadece çözmek.

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages="webapp.base.package") 
public class WebApplicationConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(new LoggerInterceptor()).addPathPatterns("/**");; 
     registry.addInterceptor(new AccessInterceptor()).addPathPatterns("/private/**");; 
    } 

} 
+0

Eğer bu çözümü ilkbahardaki uygulamamda kullanırsam, her şeyi bozar. – LNT

+4

@LNT springboot, @ EnableWebMvc açıklaması nedeniyle kesilir. Bu, springboot'un varsayılan mvc yapılandırmalarını kapatır. Sadece bu notu kaldır ve işe yarayacak. –

2

Neden bilmiyorum, yolunuzu kullandığımda, işe yaradı. Ancak önleme iki kez gerçekleştirildi. Bunu yapmanın başka bir yolunu buldum.

@Bean 
    public MappedInterceptor interceptor() { 
     return new MappedInterceptor(null, new String[]{"/","/**/*.js", "/**/*.html", "/**/*.css"}, new LogInterceptor()); 
    }