/**
* 自定义拦截规则
*/
@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 + "/**");
}
java sa-token自定义拦截 设置最大使用人数(Redis存)
于 2023-06-12 13:28:29 首次发布