做项目时,我们经常需要验证当前用户是否有登录,登录后才可以访问其他页面,而注册和登录页面不需要验证登录,又因为每个页面(除了注册和登录)都需要验证,故,我们可以在访问页面前拦截所有的请求,然后检查是否登录,具体实现方法:
1.新建filter文件夹
2.新建拦截器类LoginInterceptor 实现接口 HandlerInterceptor, 编写注解:@Component,右击Generate,选择override Methods
3.编写验证用户是否登录
HttpSession session =request.getSession(); User user =(User)session.getAttribute("user"); if(user ==null){ request.getRequestDispatcher("/login").forward(request,response); return false; }else{ return true;//如果session有值,则说明该用户已经登录。 }
4.编写注册类,如下图所示,用来注册刚才写的拦截器,如下图所示
registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/register","/login","/login/**","/css/**","/font/**","/img/**","/images/**","/js/**","/layui/**");