1
0
mirror of synced 2026-05-22 14:43:15 +00:00

refactor: 重构 TokenSign -> SaTerminalInfo

This commit is contained in:
click33
2025-03-03 16:09:35 +08:00
parent 42fbb0dde8
commit 25fcd80eb6
25 changed files with 654 additions and 521 deletions
@@ -65,7 +65,7 @@ public class JwtForMixinTest {
JWT jwt = JWT.of(token);
JSONObject payloads = jwt.getPayloads();
Assertions.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_ID), "10001"); // 账号
Assertions.assertEquals(payloads.getStr(SaJwtUtil.DEVICE), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型
Assertions.assertEquals(payloads.getStr(SaJwtUtil.DEVICE_TYPE), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型
Assertions.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_TYPE), StpUtil.TYPE); // 账号类型
// db数据 验证
@@ -75,7 +75,7 @@ public class JwtForMixinTest {
SaSession session = dao.getSession("satoken:login:session:" + 10001);
Assertions.assertNotNull(session);
Assertions.assertEquals(session.getId(), "satoken:login:session:" + 10001);
Assertions.assertTrue(session.getTokenSignList().size() >= 1);
Assertions.assertTrue(session.getTerminalList().size() >= 1);
}
// 测试:注销
@@ -68,7 +68,7 @@ public class JwtForSimpleTest {
SaSession session = dao.getSession("satoken:login:session:" + 10001);
Assertions.assertNotNull(session);
Assertions.assertEquals(session.getId(), "satoken:login:session:" + 10001);
Assertions.assertTrue(session.getTokenSignList().size() >= 1);
Assertions.assertTrue(session.getTerminalList().size() >= 1);
}
// 测试:getExtra
@@ -61,7 +61,7 @@ public class JwtForStatelessTest {
JWT jwt = JWT.of(token);
JSONObject payloads = jwt.getPayloads();
Assertions.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_ID), "10001"); // 账号
Assertions.assertEquals(payloads.getStr(SaJwtUtil.DEVICE), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型
Assertions.assertEquals(payloads.getStr(SaJwtUtil.DEVICE_TYPE), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型
Assertions.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_TYPE), StpUtil.TYPE); // 账号类型
// 时间
@@ -15,18 +15,17 @@
*/
package cn.dev33.satoken.core.session;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.SaTerminalInfo;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.TokenSign;
/**
* SaSession 测试
*
@@ -112,33 +111,33 @@ public class SaSessionTest {
SaSession session = new SaSession("session-1002");
// 添加 Token 签名
session.addTokenSign(new TokenSign("xxxx-xxxx-xxxx-xxxx-1", "PC", null));
session.addTokenSign(new TokenSign("xxxx-xxxx-xxxx-xxxx-2", "APP", null));
session.addTerminal(new SaTerminalInfo(1, "xxxx-xxxx-xxxx-xxxx-1", "PC", null));
session.addTerminal(new SaTerminalInfo(2, "xxxx-xxxx-xxxx-xxxx-2", "APP", null));
// 查询
Assertions.assertEquals(session.getTokenSignList().size(), 2);
Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-1").getDevice(), "PC");
Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-2").getDevice(), "APP");
Assertions.assertEquals(session.getTerminalList().size(), 2);
Assertions.assertEquals(session.getTerminal("xxxx-xxxx-xxxx-xxxx-1").getDeviceType(), "PC");
Assertions.assertEquals(session.getTerminal("xxxx-xxxx-xxxx-xxxx-2").getDeviceType(), "APP");
// 删除一个
session.removeTokenSign("xxxx-xxxx-xxxx-xxxx-1");
Assertions.assertEquals(session.getTokenSignList().size(), 1);
session.removeTerminal("xxxx-xxxx-xxxx-xxxx-1");
Assertions.assertEquals(session.getTerminalList().size(), 1);
// 删除一个不存在的,则不影响 TokenSign 列表
session.removeTokenSign("xxxx-xxxx-xxxx-xxxx-999");
Assertions.assertEquals(session.getTokenSignList().size(), 1);
session.removeTerminal("xxxx-xxxx-xxxx-xxxx-999");
Assertions.assertEquals(session.getTerminalList().size(), 1);
// 重置整个签名列表
List<TokenSign> list = Arrays.asList(
new TokenSign("xxxx-xxxx-xxxx-xxxx-1", "WEB", null),
new TokenSign("xxxx-xxxx-xxxx-xxxx-2", "phone", null),
new TokenSign("xxxx-xxxx-xxxx-xxxx-3", "ipad", null)
List<SaTerminalInfo> list = Arrays.asList(
new SaTerminalInfo(1, "xxxx-xxxx-xxxx-xxxx-1", "WEB", null),
new SaTerminalInfo(2, "xxxx-xxxx-xxxx-xxxx-2", "phone", null),
new SaTerminalInfo(3, "xxxx-xxxx-xxxx-xxxx-3", "ipad", null)
);
session.setTokenSignList(list);
Assertions.assertEquals(session.getTokenSignList().size(), 3);
Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-1").getDevice(), "WEB");
Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-2").getDevice(), "phone");
Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-3").getDevice(), "ipad");
session.setTerminalList(list);
Assertions.assertEquals(session.getTerminalList().size(), 3);
Assertions.assertEquals(session.getTerminal("xxxx-xxxx-xxxx-xxxx-1").getDeviceType(), "WEB");
Assertions.assertEquals(session.getTerminal("xxxx-xxxx-xxxx-xxxx-2").getDeviceType(), "phone");
Assertions.assertEquals(session.getTerminal("xxxx-xxxx-xxxx-xxxx-3").getDeviceType(), "ipad");
}
// 测试重置 DataMap
@@ -15,28 +15,27 @@
*/
package cn.dev33.satoken.core.session;
import cn.dev33.satoken.session.SaTerminalInfo;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import cn.dev33.satoken.session.TokenSign;
/**
* TokenSign 相关测试
*
* @author click33
* @since 2022-9-4
*/
public class TokenSignTest {
public class SaTerminalInfoTest {
// 测试
@Test
public void testTokenSign() {
TokenSign tokenSign = new TokenSign();
tokenSign.setDevice("PC");
tokenSign.setValue("ttt-value");
public void testSaTerminalInfo() {
SaTerminalInfo tokenSign = new SaTerminalInfo();
tokenSign.setDeviceType("PC");
tokenSign.setTokenValue("ttt-value");
Assertions.assertEquals(tokenSign.getDevice(), "PC");
Assertions.assertEquals(tokenSign.getValue(), "ttt-value");
Assertions.assertEquals(tokenSign.getDeviceType(), "PC");
Assertions.assertEquals(tokenSign.getTokenValue(), "ttt-value");
Assertions.assertNotNull(tokenSign.toString());
}
@@ -44,7 +44,7 @@ public class TokenInfoTest {
info.setSessionTimeout(120);
info.setTokenSessionTimeout(1800);
info.setTokenActiveTimeout(120);
info.setLoginDevice("PC");
info.setLoginDeviceType("PC");
info.setTag("xxx");
Assertions.assertEquals(info.getTokenName(), "satoken");
@@ -56,7 +56,7 @@ public class TokenInfoTest {
Assertions.assertEquals(info.getSessionTimeout(), 120);
Assertions.assertEquals(info.getTokenSessionTimeout(), 1800);
Assertions.assertEquals(info.getTokenActiveTimeout(), 120);
Assertions.assertEquals(info.getLoginDevice(), "PC");
Assertions.assertEquals(info.getLoginDeviceType(), "PC");
Assertions.assertEquals(info.getTag(), "xxx");
Assertions.assertNotNull(info.toString());
@@ -64,7 +64,7 @@ public class TokenInfoTest {
@Test
public void testLoginParameter() {
Assertions.assertEquals(new SaLoginParameter().setDevice("PC").getDevice(), "PC");
Assertions.assertEquals(new SaLoginParameter().setDeviceType("PC").getDeviceType(), "PC");
Assertions.assertEquals(new SaLoginParameter().setIsLastingCookie(false).getIsLastingCookie(), false);
Assertions.assertEquals(new SaLoginParameter().setTimeout(1600).getTimeout(), 1600);
Assertions.assertEquals(new SaLoginParameter().setToken("token-xxx").getToken(), "token-xxx");
@@ -128,7 +128,7 @@ public class BasicsTest {
SaSession session = dao.getSession("satoken:login:session:" + 10001);
Assertions.assertNotNull(session);
Assertions.assertEquals(session.getId(), "satoken:login:session:" + 10001);
Assertions.assertTrue(session.getTokenSignList().size() >= 1);
Assertions.assertTrue(session.getTerminalList().size() >= 1);
}
// 测试:注销
@@ -15,8 +15,12 @@
*/
package cn.dev33.satoken.springboot;
import java.util.List;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.session.SaTerminalInfo;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
@@ -24,12 +28,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.session.TokenSign;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
import java.util.List;
/**
* Sa-Token 多端登录测试
@@ -115,9 +114,9 @@ public class ManyLoginTest {
Assertions.assertEquals(dao.get("satoken:login:token:" + token1), "-4");
// Account-Session里的 token1 签名会被移除
List<TokenSign> tokenSignList = StpUtil.getSessionByLoginId(10001).getTokenSignList();
for (TokenSign tokenSign : tokenSignList) {
Assertions.assertNotEquals(tokenSign.getValue(), token1);
List<SaTerminalInfo> tokenSignList = StpUtil.getSessionByLoginId(10001).getTerminalList();
for (SaTerminalInfo terminal : tokenSignList) {
Assertions.assertNotEquals(terminal.getTokenValue(), token1);
}
}