无需多言,只为查找方便:
@Component
public class LoginInterceptor implements HandlerInterceptor {// 登录拦截器
@Autowired
private TAdminInfoService tAdminInfoService;
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Cookie[] cookies = request.getCookies();
String loginId = null;
// 查找Cookie中是否有相关的登录信息
if (cookies!=null && cookies.length>0) {
for (Cookie item : cookies) {
if (item.getName().equals("loginId")) {
loginId = item.getValue();
break;
}
}
}
// 如果Cookie中有登录信息
if (StringUtils.isNotEmpty(loginId)) {
TAdminInfo model = (TAdminInfo) session.getAttribute("login");
if (null == model) {
model = tAdminInfoService.getById(Integer.parseInt(loginId));
// 将登录信息保存到Session
session.setAttribute("login", model);
}
return true;
}
// 如果Cookie中没有登录信息, 先去登录
response.sendRedirect("/toLogin");
return false;
}
}
@Configuration
public class WebRefwinStoreConfigurer implements WebMvcConfigurer {// 配置登录拦截器
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {// 配置应该被拦截和不应被拦截的路径
registry.addInterceptor(loginInterceptor).addPathPatterns("/**")
// 排除静态资源访问路径
.excludePathPatterns("/Content/**","/css/**")
// 排除登录页面
.excludePathPatterns("/toLogin")
// 404错误处理页面
.excludePathPatterns("/error/page");
}
}