在获取session的Service中,加入代码:
@Autowired
private FindByIndexNameSessionRepository<? extends Session> sessions;
private static final String USER_LOGIN_KEY = "USER_LOGIN_KEY_";
登录校验成功后,删除旧session信息,代码如下:
public boolean removeOldLoginUserInfo(Integer userId, String sessionId) {
String key = USER_LOGIN_KEY + userId;
String sessionIdForRedis = redisTemplate.opsForValue().get(key);
if (logger.isInfoEnabled()) {
logger.error("userId is {}, sessionId is {}, sessionIdForRedis is {}", userId, sessionId, sessionIdForRedis);
}
if (!StringUtils.equalsIgnoreCase(sessionIdForRedis, sessionId)) {
sessions.delete(sessionIdForRedis);
}
redisTemplate.opsForValue().set(key, sessionId);
return true;
}
拦截器中获取session信息做较验。
在SpringBoot应用中,当用户登录校验成功后,该代码会删除旧的Session信息并用新的SessionID更新Redis中的记录。在拦截器中,利用Session信息进行权限检查。此过程确保了用户登录状态的正确同步。
&spm=1001.2101.3001.5002&articleId=129629356&d=1&t=3&u=1b8899691b334cd39cf4ac2de10fca80)
677

被折叠的 条评论
为什么被折叠?



