登录校验-interceptor/拦截器
Interceptor
概念:拦截前端对后端的某些请求 使用步骤
- 自定义拦截器类,实现HandlerInterceptor接口,重写所有的方法(preHandle方法在controller执行之前执行、【postHandle、afterCompletion】在controller执行后执行)
 - 注册拦截器
 
详细步骤
过滤器Filter:会拦截所有的资源 拦截器Interceptor:只会拦截spring中的资源 在开发的时候,使用其中的一种就可以了
- public class InterceptorDemo implements HandlerInterceptor实现该接口
 - 实现preHandle/postHandle/afterCompletion方法
 - 在preHandle方法中添加
 
//和servlet过滤器的流程一致,在这里true表示放行,false表示拦截
String url=res.getRequestURI().toString();
        if(url.contains("login"))
        {
            System.out.print("跳转到登录页面");
            return true;
        }
        String jtw=res.getHeader("token");
        if(!StringUtils.hasLength(jtw))
        {
            Result error=Result.error("no_login");
            String nologin= JSONObject.toJSONString(error);
            rsp.getWriter().write(nologin);
            log.info("interceptor拦截1"+url);
            return false;
        }
        try
        {
            Jwt.parseJWT(jtw);
        }catch (Exception e)
        {
            e.printStackTrace();
            Result error=Result.error("no_login");
            String nologin= JSONObject.toJSONString(error);
            rsp.getWriter().write(nologin);
            log.info("interceptor拦截2"+url);
            return false;
        }
        return true; 
4.创建配置类实现 WebMvcConfigurer
@Configuration//申明是配置文件
public class InterceptorDemoconfig implements WebMvcConfigurer {
    @Autowired
    private InterceptorDemo interceptorDemo;//注入拦截器对象
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(interceptorDemo).addPathPatterns("/**")//注册拦截器
;}
}
				       
			          