1.需求背景
当管理员修改某一个用户角色信息时,后台需要剔除用户登录,清除用户的登录状态。
2.springsession整合redis 的依赖部分
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
3.剔除用户的逻辑部分
import org.springframework.session.FindByIndexNameSessionRepository; import org.springframework.session.Session; import org.springframework.session.data.redis.RedisOperationsSessionRepository; @Autowired private RedisOperationsSessionRepository redisOperationsSessionRepository; @Autowired private FindByIndexNameSessionRepository<? extends Session> sessionRepository; private void deleteUserSession(String userId) { log.info("删除用户session,userId:{}", userId); // 查询用户的 Session 信息,返回值 key 为 sessionId Map<String, ? extends Session> userSessions = sessionRepository.findByIndexNameAndIndexValue(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME, userId); // 移除用户的 session 信息 List<String> sessionIds = new ArrayList<>(userSessions.keySet()); for (String session : sessionIds) { log.info("删除用户session,sessionId:{}", session); redisOperationsSessionRepository.deleteById(session); } }