java sa-token自定义拦截 设置最大使用人数(Redis存)

/**
     * 自定义拦截规则
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry)
    {
        registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**").excludePathPatterns(Constants.RESOURCE_PREFIX + "/**");
        registry.addInterceptor(new SaRouteInterceptor((req, res, handler) -> {
            SaRouter.match("/**", "/doLogin", r -> StpUtil.checkLogin());
            if (StpUtil.isLogin()) {
                StpUtil.checkActivityTimeout();
                StpUtil.updateLastActivityToNow();
                StpUtil.renewTimeout(timeout);

                String pre = SecureUtil.md5("redisUserNumber");
                String md5IdCode = SecureUtil.md5(UserUtil.getCurrentUser().getUserId().toString());
                String redisKey = pre + md5IdCode;
                Set<String> set = redisCache.getListKey(pre);
                //设置最大登录人数为2
                if (CollectionUtil.isNotEmpty(set)) {
                    if (set.size() > 2) {
                        SaTokenException.throwByNull(null, MessageUtils.message("login.exceeded"));
                    } else {
                        redisCache.expire(redisKey, timeout);
                    }
                }else {
                    StpUtil.logout();
                }
            } else {
                StpUtil.logout();
            }
        })).addPathPatterns("/**").excludePathPatterns(Constants.RESOURCE_PREFIX + "/**");
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值