docs: 完善会话查询章节文档,增加单账号会话查询的操作示例

This commit is contained in:
click33
2025-03-19 12:03:30 +08:00
parent c6e1be58c5
commit 631db8215f
3 changed files with 82 additions and 21 deletions

View File

@@ -1,11 +1,14 @@
package com.pj.test;
import cn.dev33.satoken.session.SaTerminalInfo;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 登录测试
* @author click33
@@ -45,7 +48,19 @@ public class LoginController {
public SaResult tokenInfo() {
return SaResult.data(StpUtil.getTokenInfo());
}
// 查询账号登录设备信息 ---- http://localhost:8081/acc/terminalInfo
@RequestMapping("terminalInfo")
public SaResult terminalInfo() {
System.out.println("账号 10001 登录设备信息:");
List<SaTerminalInfo> terminalList = StpUtil.getTerminalListByLoginId(10001);
for (SaTerminalInfo ter : terminalList) {
System.out.println("登录index=" + ter.getIndex() + ", 设备type=" + ter.getDeviceType() + ", token=" + ter.getTokenValue() + ", 登录time=" + ter.getCreateTime());
}
return SaResult.data(terminalList);
}
// 测试注销 ---- http://localhost:8081/acc/logout
@RequestMapping("logout")
public SaResult logout() {

View File

@@ -3,6 +3,8 @@ package com.pj.test;
import cn.dev33.satoken.annotation.SaCheckHttpDigest;
import cn.dev33.satoken.annotation.SaCheckSign;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.SaTerminalInfo;
import cn.dev33.satoken.spring.SpringMVCUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
/**
* 测试专用Controller
@@ -25,10 +28,11 @@ public class TestController {
// 测试登录 ---- http://localhost:8081/test/login
@RequestMapping("login")
public SaResult login(@RequestParam(defaultValue = "10001") long id) {
public SaResult login(@RequestParam(defaultValue = "10001") long id, String dt) {
StpUtil.login(id, new SaLoginParameter()
.setIsConcurrent(true)
.setIsShare(false)
.setDeviceType(dt)
.setMaxLoginCount(4)
.setMaxTryTimes(12)
.setTerminalExtra("deviceSimpleTitle", "XiaoMi 15 Ultra")
@@ -42,17 +46,23 @@ public class TestController {
// 测试 浏览器访问: http://localhost:8081/test/test
@RequestMapping("test")
@SaCheckSign(verifyParams = {"name", "age"})
public SaResult test() {
System.out.println("------------进来了 " + SaFoxUtil.formatDate(new Date()));
// StpUtil.getLoginId();
// StpUtil.getAnonTokenSession();
// StpUtil.setTokenValue("xxx");
// StpUtil.getSession().set("name", "zhang");
// StpUtil.getSession().set("age", 18);
// SysUser user = new SysUser(10001, "lisi", 22);
// StpUtil.getSession().set("user", user);
// StpUtil.getTokenSession().set("user", user);
// 获取所有已登录的会话id
List<String> sessionIdList = StpUtil.searchSessionId(null, 0, -1, false);
for (String sessionId : sessionIdList) {
// 根据会话id查询对应的 SaSession 对象,此处一个 SaSession 对象即代表一个登录的账号
SaSession session = StpUtil.getSessionBySessionId(sessionId);
// 查询这个账号都在哪些设备登录了依据上面的示例账号A 的 SaTerminalInfo 数量是 3账号B 的 SaTerminalInfo 数量是 2
List<SaTerminalInfo> terminalList = session.terminalListCopy();
System.out.println("会话id" + sessionId + ",共在 " + terminalList.size() + " 设备登录");
}
// 返回
return SaResult.data(null);