激活状态拦截器

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

业务逻辑:

  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 @   RainbowMagic  阅读(33)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示