Springboot与Interceptor
絮絮叨叨: 最近在看一个项目,在登录的时候,作者用了Spring的Interceptor和WebConfig实现了对用户登录的拦截。主要涉及到两个类:HandlerInterceptorAdapter 类和 WebMvcConfigurerAdapter 类(已经过时,Spring5 已经将其摒弃)现用实现WebMvcConfigurer
接口实现。
一、遇到的问题:
不管用户是否登录,都可以访问到页面。
二、需求:
用户未登录时,不能访问相应页面,若直接访问,则跳转到登录页面。
三、解决方法:
利用 Spring 的 Interceptor 对相关页面进行拦截,判断当前是否有用户登录,若有,则跳转到相应页面;若无,则跳转到登录页面。
用到的类和接口:HandlerInterceptorAdapter 和 WebMvcConfigurer
四、具体实现:
-
定义一个Interceptor,继承HandlerInterceptorAdapter 类,重写其preHandle()方法,编写拦截的条件。
public class LoginInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //判断当前是否有用户登录,若未登录,则返回/admin页面 if (request