1.spring boot拦截器默认有
- HandlerInterceptorAdapter
- AbstractHandlerMapping
- UserRoleAuthorizationInterceptor
- LocaleChangeInterceptor
- ThemeChangeInterceptor
2.配置spring mvc的拦截器WebMvcConfigurerAdapter
- public class WebAppConfig extends WebMvcConfigurerAdapter
3.实现添加拦截器方法
- public void addInterceptors(InterceptorRegistry registry){
- }
- registry.addInterceptor可以通过此方法添加拦截器, 可以是spring提供的或者自己添加的
4.实例部分
- public class WebAppConfig extends WebMvcConfigurerAdapter{
- public static void main(String[] args) {
- SpringApplication.run(WebAppConfig.class, args);
- }
- /**
- * 配置拦截器
- * @author lance
- * @param registry
- */
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(new UserSecurityInterceptor()).addPathPatterns("/user/**");
- }
- }
- UserSecurityInterceptor代码
- public class UserSecurityInterceptor implements HandlerInterceptor {
- @Override
- public boolean preHandle(HttpServletRequest request,
- HttpServletResponse response, Object handler) throws Exception {
- return true;
- }
- @Override
- public void postHandle(HttpServletRequest request,
- HttpServletResponse response, Object handler,
- ModelAndView modelAndView) throws Exception {
- }
- @Override
- public void afterCompletion(HttpServletRequest request,
- HttpServletResponse response, Object handler, Exception ex)
- throws Exception {
- }
- }
5.demo地址
https://github.com/leelance/spring-boot-all/tree/master/spring-boot-samples
想问下,我配置的这个拦截器为啥没有生效呢?
转自:http://lihao312.iteye.com/blog/2078139
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
- import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- @Configuration
- public class WebSecurityConfig extends WebMvcConfigurerAdapter {
- /**
- * 登录session key
- */
- public final static String SESSION_KEY = "user";
- @Bean
- public SecurityInterceptor getSecurityInterceptor() {
- return new SecurityInterceptor();
- }
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- InterceptorRegistration addInterceptor = registry.addInterceptor(getSecurityInterceptor());
- // 排除配置
- // addInterceptor.excludePathPatterns("/error");
- // addInterceptor.excludePathPatterns("/login**");
- // 拦截配置
- addInterceptor.addPathPatterns("/**");
- }
- private class SecurityInterceptor extends HandlerInterceptorAdapter {
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
- throws Exception {
- HttpSession session = request.getSession();
- if (session.getAttribute(SESSION_KEY) != null)
- return true;
- // 跳转登录
- String url = "/login";
- response.sendRedirect(url);
- return false;
- }
- }
- }