怎么做网站的rss,网络服务公司注册官网,高雅不俗气的公司名字,东莞专业网站设计尽管框架将大部分操作提供了简易的封装#xff0c;但在一些特殊场景下#xff0c;我们仍需要绕过框架#xff0c;直达数据底层进行一些操作。
1、官方文档
会话查询
https://sa-token.cc/doc.html#/up/search-sessionSa-Token提供以下API助你直接操作会话列表#xff1a…尽管框架将大部分操作提供了简易的封装但在一些特殊场景下我们仍需要绕过框架直达数据底层进行一些操作。
1、官方文档
会话查询
https://sa-token.cc/doc.html#/up/search-sessionSa-Token提供以下API助你直接操作会话列表
// 查询所有已登录的 Token
StpUtil.searchTokenValue(String keyword, int start, int size, boolean sortType);// 查询所有账号 Session 会话
StpUtil.searchSessionId(String keyword, int start, int size, boolean sortType);// 查询所有令牌 Session 会话
StpUtil.searchTokenSessionId(String keyword, int start, int size, boolean sortType);
参数详解
keyword: 查询关键字只有包括这个字符串的 token 值才会被查询出来。start: 数据开始处索引。size: 要获取的数据条数 值为-1代表一直获取到末尾。sortType: 排序方式true正序先登录的在前false反序后登录的在前。
2、效果预览 由图中可以看出我们查询了在线用户的基本登录信息包括账号、姓名、部门、登录IP、登录位置、操作系统、登录设备类型、浏览器信息等信息还提供了【强退】的功能按钮
3、在线用户查询
public TableInfoVO list(int page, int size) {// 返回数据对象ListLoginUserRespVO list new ArrayList();// 获取所有登录的用户idsListString logIds StpUtil.searchSessionId(, 0, -1, false);// 便利获取登录信息SaSession session null;for (int i page * size, len Math.min(size i, logIds.size()); i len; i) {session StpUtil.getSessionBySessionId(logIds.get(i));list.add(session.getModel(user_info, LoginUserRespVO.class));}return TableInfoVO.ok(logIds.size(), list);
}通过 sa-token 提供的会话查询方法底层是用的 keys 命令然后根据分页参数截取我们需要的数据再根据会话查询登录用户信息
4、用户强退
public RES updateQuitOnline(Long[] ids) {// 强制下线for (Long item : ids) {StpUtil.kickout(item);}return RES.success();
}由前端传回需要强退的用户登录 id调用 StpUtil.kickout(Object loginId); 方法即可实现让用户强制下线操作
5、注意事项
由于会话查询底层采用了遍历方式获取数据当数据量过大时此操作将会比较耗时有多耗时呢这里提供一份参考数据
单机模式下百万会话取出10条 Token 平均耗时 0.255s。Redis模式下百万会话取出10条 Token 平均耗时 3.322s。
请根据业务实际水平合理调用API。 基于活动 Token 的统计方式会比实际情况略有延迟如果需要精确统计实时在线用户信息建议采用 WebSocket。 如您在阅读中发现不足欢迎留言