强制下线
2025年2月13日大约 1 分钟
强制下线
相关信息
强制登出用户的时候,需要处理用户缓存,或者修改了角色,需要强制拿出这些角色相关的用户的话,需要开发人员自行决定是否要这样做。下面这两个配置类,需要放在 system 模块下
用户处理
@Component
@RequiredArgsConstructor
public class LoginCacheClear implements ILoginCacheClear {
final RedisTemplate<Object, Object> redisTemplate;
@Override
public void accept(Collection<SysUser> sysUsers) {
redisTemplate.delete(sysUsers.stream()
.map(user -> Arrays.asList(
//TODO 这里有多少种登录方式就得加多少种,用户名,包含了邮箱
CacheConstants.OAuth.USERNAME + "::" +user.getUsername(),
CacheConstants.OAuth.OPENID + "::" + user.getUsername(),
CacheConstants.OAuth.PHONE + "::" + user.getPhone(),
CacheConstants.OAuth.USERID + "::" + user.getId()
))
.flatMap(Collection::stream)
.collect(Collectors.toSet()));
}
}
角色处理
@Component
public class ForceAllClientUserByRole implements IForceAllClientUserByRole {
@Override
public void accept(String s, Collection<Long> longs) {
// 这里默认不处理按角色掉线用户,因为角色关联的用户可能太多了
}
}
贡献者
Mango Crisp