Springboot登录拦截器,要注意排除拦截登录页,登录URL和静态资源文件,默认资源文件都存放在static目录下,而对外的URL都是static目录下的文件夹名。主要分一下两步编写即可实现。
第一步:创建一个类实现HandlerInterceptor接口,重写接口的请求拦截方法
/**
* 登录拦截器
* @author Boost
*
*/
public class LoginInterceptor implements HandlerInterceptor{
private List<String> url = new ArrayList();
/**
* 开始进入地址请求拦截
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session = request.getSession();
if(session.getAttribute("admin") != null){
return true;
}else{
response.sendRedirect("/admin/login"); //未登录,跳转到登录页
return false;
}
}
/**
* 处理请求完成后视图渲染之前的处理操作
*/
@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 {
}
/**
* 定义排除拦截URL
* @return
*/
public List<String> getUrl(){
url.add("/admin/login"); //登录页
url.add("/admin/login/in"); //登录action URL
//网站静态资源
url.add("/css/**");
url.add("/js/**");
url.add("/lib/**");
url.add("/fonts/**");
url.add("/images/**");
return url;
}
}
第二步:创建一个类继承WebMvcConfigurerAdapter类
@Configuration
public class WebappAdapter implements WebMvcConfigurer{
/**
* 注册拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
LoginInterceptor loginInterceptor = new LoginInterceptor();
// addPathPatterns 添加拦截url, excludePathPatterns 排除拦截url
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns(loginInterceptor.getUrl());
WebMvcConfigurer.super.addInterceptors(registry);
}
}