拦截器作用:将所有请求统一拦截到拦截器中,拦截器定义过滤规则,对不满足过滤规则的请求,统一跳转至login.html
步骤:
1.Springboot中编写拦截器
2.注册拦截器
代码如下
1、springboot 中配置编写拦截器(LoginInterceptor.java)
package com.chens.store.intercept;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/** 拦截器 **/
public class LoginInterceptor implements HandlerInterceptor {
/**
* 处理的方法(拦截的业务代码写在这里)
* @return false 被拦截在资源前, true放行
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Object uid = session.getAttribute("uid");
if (uid==null) {
//如果用户没有登录过系统,则重定向到登录页面
response.sendRedirect("/web/login.html");
return false;
}
return true;
}
}
2、编写Spring配置文件,将拦截器配置到Spring(LoginInterceptorConfigure.java)
/** 拦截器注册 **/
@Configuration
public class LoginInterceptorConfigure implements WebMvcConfigurer {
/**
* 配置拦截器对象
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
//拦截器
HandlerInterceptor loginInterceptor = new LoginInterceptor();
//放行的请求(白名单)
List<String> whiteList = new ArrayList<>();
whiteList.add("/web/login.html");
whiteList.add("/user/hello");
whiteList.add("/css/**");
whiteList.add("/js/**");
whiteList.add("/images/**");
whiteList.add("/bootstrap3/**");
whiteList.add("/web/login.html");
whiteList.add("/user/hello");
whiteList.add("/user/reg");
whiteList.add("/user/login");
//addPathPatterns:添加拦截路径
registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns(whiteList);
WebMvcConfigurer.super.addInterceptors(registry);
}
}