添加路径拦截功能
思路:默认拦截所有路径,放开一些不重要的路径,其他路径根据登录拦截器判断是否放行
- 主要代码如下
- 登录拦截器
@Component
public class LoginInterceptor implements HandlerInterceptor {
@Autowired
ReqSearchServiceImpl service;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//1、获得cookie
Cookie[] cookies=request.getCookies();
//没有cookie信息,则重定向到登录界面
if(null==cookies){
response.sendRedirect(request.getContextPath()+"/toLoginPage");
return false;
}
// 定义cookie_username,用户的一些登录信息,例如用户名,密码等
String username=null;
//获取cookie里面的一些用户信息
for (Cookie item : cookies) {
if("username".equals(item.getName())){
username=item.getValue();
break;
}
}
//如果cookie里面没有包含用户的一些登录信息,则重定向到登录界面
if(StringUtils.isEmpty(username)){
response.sendRedirect(request.getContextPath()+"/toLoginPage");
return false;
}
//获取HttpSession对象
HttpSession session=request.getSession();
//获取我们登录后存在session中的用户信息,如果为空,表示session已经过期
Object object=session.getAttribute("user");
if(null==object){
//将用户保存到session中
UserMore userMore=service.getUserByUsername(username);
session.setAttribute("user",userMore);
}
//已经登录
return true;
}
}
- web配置类
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration ir=registry.addInterceptor(loginInterceptor);
//拦截路径
ir.addPathPatterns("/*");
//不拦截路径
List<String> irs=new ArrayList<>();
irs.add("/toLoginPage");
irs.add("/getVerify");
irs.add("/checkVerify");
irs.add("/toRegisterPage");
irs.add("/addUser");
irs.add("/getLoginResult");
ir.excludePathPatterns(irs);
}
}
明天任务:学习mybatis分页插件,实现查询分页展示