SpringBoot登陆拦截器

目前正在学习spring boot  学到了登陆拦截器

登陆拦截器原理都是一摸一样的

写一个 LoginInterceptor implements HandlerInterceptor 类

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user = request.getSession().getAttribute("username");
// 如果获取的request的session中的loginUser参数为空(未登录),就返回登录页,否则放行访问
if (user == null) {
// 获取request返回页面到登录页
request.getRequestDispatcher("/test/tologin").forward(request, response);
return false;
} else {
// 已登录,放行
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 {

}
然后再写一个 WebMvcConfig implements WebMvcConfigurer 类
@Bean
public HandlerInterceptor getMyInterceptor(){
return new LoginInterceptor();
}

public void addInterceptors(InterceptorRegistry registry) {
// 添加拦截的请求,并排除几个不拦截的请求
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/test/login", "/test/tologin");
}
controller中的代码我就不写了,就是将登陆的账号存入session中
运行后发现功能实现了,但是我的登录页样式呢?所有的js,css都不能用
然后就去找度娘,说是springboot2.0以上的,在设置拦截器时也会把js,css文件拦截了
所以应该排除js,css,image等文件夹
public void addInterceptors(InterceptorRegistry registry) {
// 添加拦截的请求,并排除几个不拦截的请求
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/test/login", "/test/tologin","/images/**","/scripts/**","/style/**");
}
运行果然样式回来了,拦截器也实现了
 

猜你喜欢

转载自www.cnblogs.com/SFGN/p/10658039.html