首先创建一个类让他继承 HandlerInterceptor接口
实现其中的
preHandle
postHandle
afterCompletion
方法,这三个方法分别作用于请求来的前中后(顾名思义),一般会在登录成功之后再session域中放入用户登录的有关信息,
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session= request.getSession();
User user=(User) session.getAttribute("user");
if(user!=null){
return true;
}
//拦截住跳转到登录页
session.setAttribute("msg","请先登录!");
response.sendRedirect("/");
return false;
}
(关于request.getSession()与request.getSession(false)的区别,前者会先对是否已经有session做判断,没有回创建一个,而后者只取,如果没有返回null)
接下来写配置类,有与springboot框架基本舍弃了之前老项目xml配置文件,本人不太会操作properties或者yml配置文件也可以写配置类,其到同样的作用,
对于传统的xml文件也可以使用@ImportResources注解来引入。
@Configuration//次类为配置类==xml
public class AdminWebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
WebMvcConfigurer.super.addInterceptors(registry);
String[] addPathPatterns = {"/**"};//拦截所有请求
String[] excludePathPatterns = {"/index","/", "/login", "/css/**", "/fonts/**", "/images/**", "/js/**"};
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns(addPathPatterns)
.excludePathPatterns(excludePathPatterns);
}
}
addPathPatterns:要拦截的请求
excludePathPatterns:要放行的请求,一般与登录相关的请求和静态资源文件是需要放行的。