Good day. I got a spring mvc application and 2 controllers inside. First controller (PublicController) can process requests from all users, Second (PrivateController) can only process authorized users.
So I implemented two 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());
}
}
I need my LoggerInterceptor
to handle all controller's requests, and my AccessInterceptor
to handle only PrivateController
's requests.
I must map Interceptors
to Controllers
with annotations
Just solve it.
@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/**");;
}
}
I don't know why, when I use your way, it worked. But the interceptor executed twice. And I found another way to do this.
@Bean
public MappedInterceptor interceptor() {
return new MappedInterceptor(null, new String[]{"/","/**/*.js", "/**/*.html", "/**/*.css"}, new LogInterceptor());
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With