如何使用springBoot拦截器
先创建一个类继承HandlerInterceptorAdapter,然后实现preHandle方法
我这是从session查找是否有user的信息,有就不拦截,没有则拦截
package com.blog.blog.interceptor;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class loginInterceptor extends HandlerInterceptorAdapter {
@Override
//请求预处理 登录拦截
//此时还不知道拦截那些路径
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
if(request.getSession().getAttribute("user") == null){
response.sendRedirect("/admin/login");//重定向
return false;
}
return true;
}
}
之后再键一个类继承WebMvcConfigurerAdapter,不过这个类被新版本舍弃了。但还能用
package com.blog.blog.interceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class webConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new loginInterceptor())
.addPathPatterns("/admin/**") // 需要拦截的路径
.excludePathPatterns("/admin/login");//不需要拦截的路径
super.addInterceptors(registry);
}
}