激活状态拦截器

用户只有激活成功才可以发送文章 删除文章等操作

业务逻辑:

  1. 从header中取出id
  2. 根据id从redis取出用户信息缓存信息
  3. 判断是否能从redis中取出用户缓存若未能取出直接拦截
  4. 判断用户状态码是否已激活 若未激活 直接拦截

public class UserActiveInterceptor extends BaseInterceptor implements HandlerInterceptor {
    @Autowired
    protected RedisOperator redisOperator;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String userId = request.getHeader("headerUserId");

        String redisUserCacheJson = redisOperator.get(REDIS_USER_CACHE + ":" + userId);

        if (StringUtils.isNotBlank(redisUserCacheJson)) {
            AppUser appUser = JsonUtil.jsonToObject(redisUserCacheJson, AppUser.class);

            if (appUser.getActiveStatus() == null || appUser.getActiveStatus() != UserStatus.ACTIVE.type) {
                GraceException.display(ResponseStatusEnum.USER_INACTIVE_ERROR);
                return false;
            }
        } else {
            return false;
        }

        return true;

    }
}

注入spring容器并注册到拦截器中


    @Bean
    public UserActiveInterceptor userActiveInterceptor() {
        return new UserActiveInterceptor();
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(userActiveInterceptor())
                .addPathPatterns("/user/getAccountInfo");
    }
posted @ 2021-07-26 10:50  RainbowMagic  阅读(40)  评论(0)    收藏  举报