docs: @Override
      public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
              throws Exception {
  
          //
          // 去掉不需拦截的path
          //
          String requestPath = request.getRequestURI();
  
          // 显示所有用户的请求
          LOG.info(request.getRequestURI());
  
          if (notInterceptPathList != null) {
  
              // 更精确的定位
              for (String path : notInterceptPathList) {
                  if (requestPath.contains(path)) {
                      return true;
                  }
              }
          }
  
          /**
           * 种植Cookie
           */
          plantCookie(request, response);
  
          /**
           * 登录与否判断
           */
  
          //
          // 判断session中是否有visitor
          //
          HttpSession session = request.getSession();
          Visitor visitor = (Visitor) session.getAttribute(UserConstant.USER_KEY);
  
          //
          // session中没有该信息,则从 redis上获取，并更新session的数据
          //
          if (visitor == null) {
  
              Visitor redisVisitor = redisLogin.isLogin(request);
  
              //
              // 有登录信息
              //
              if (redisVisitor != null) {
  
                  // 更新session中的登录信息
                  redisLogin.updateSessionVisitor(session, redisVisitor);
  
              } else {
  
                  // 还是没有登录
                  returnJsonSystemError(request, response, "login.error", ErrorCode.LOGIN_ERROR);
                  return false;
              }
          } else {
  
              // 每次都更新session中的登录信息
              redisLogin.updateSessionVisitor(session, visitor);
          }
  
          return true;
      }