NutzCN Logo
问答 通过用户的id,可以让用户退出登录吗?
发布于 2897天前 作者 shusheng 2085 次浏览 复制 上一个帖子 下一个帖子
标签:

也就是说,调用退出接口时的session,可能不是id用户的session

6 回复

要么在登录是记录到一个表/redis键, 要么遍历全部session

Subject subject = SecurityUtils.getSubject();
SecurityUtils.getSubject().logout();

我要在redis中记录一个subject,才可以调用他的logout吧

不必的,只需要session id

 Subject subject = new Subject.Builder().sessionId(sessionId).buildSubject();

Pipeline pipe = jedis().pipelined();
		pipe.set(user.getId()+"", subject.getSession().getId()+"");
		pipe.sync();
String sessionId = jedis().get(userId+"");
		Subject subject = new Subject.Builder().sessionId(Long.parseLong(sessionId)).buildSubject();
		subject.logout();

单一操作就别用pipeline了

另外, set(key, value) 不要只用id啊, 加前置啊, 例如 u:session:

最后, 用sadd, 相当于HashSet, 考虑多个session的情况,应该更稳妥一些

添加回复
请先登陆
回到顶部