mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-08-20 00:44:30 +08:00
fix: 修复 jwt mixin 模式不能正确创建 token 的问题
This commit is contained in:
parent
0e4d812b8b
commit
42fbb0dde8
@ -547,7 +547,7 @@ public class StpLogic {
|
||||
// 4、如果代码走到此处,说明未能成功复用旧 token,需要根据算法新建 token
|
||||
return SaStrategy.instance.generateUniqueToken.execute(
|
||||
"token",
|
||||
loginParameter.getMaxTryTimes(),
|
||||
getConfigOfMaxTryTimes(loginParameter),
|
||||
() -> {
|
||||
return createTokenValue(id, loginParameter.getDevice(), loginParameter.getTimeout(), loginParameter.getExtraData());
|
||||
},
|
||||
@ -1418,7 +1418,7 @@ public class StpLogic {
|
||||
// 随机创建一个 Token
|
||||
tokenValue = SaStrategy.instance.generateUniqueToken.execute(
|
||||
"token",
|
||||
getConfigOfMaxTryTimes(),
|
||||
getConfigOfMaxTryTimes(createSaLoginParameter()),
|
||||
() -> {
|
||||
return createTokenValue(null, null, getConfigOrGlobal().getTimeout(), null);
|
||||
},
|
||||
@ -2863,10 +2863,11 @@ public class StpLogic {
|
||||
/**
|
||||
* 返回全局配置的 maxTryTimes 值,在每次创建 token 时,对其唯一性测试的最高次数(-1=不测试)
|
||||
*
|
||||
* @param loginParameter /
|
||||
* @return /
|
||||
*/
|
||||
public int getConfigOfMaxTryTimes() {
|
||||
return getConfigOrGlobal().getMaxTryTimes();
|
||||
public int getConfigOfMaxTryTimes(SaLoginParameter loginParameter) {
|
||||
return loginParameter.getMaxTryTimes();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -15,9 +15,6 @@
|
||||
*/
|
||||
package cn.dev33.satoken.jwt;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cn.dev33.satoken.context.SaHolder;
|
||||
import cn.dev33.satoken.dao.SaTokenDao;
|
||||
import cn.dev33.satoken.exception.ApiDisabledException;
|
||||
@ -26,12 +23,16 @@ import cn.dev33.satoken.exception.SaTokenException;
|
||||
import cn.dev33.satoken.jwt.error.SaJwtErrorCode;
|
||||
import cn.dev33.satoken.jwt.exception.SaJwtException;
|
||||
import cn.dev33.satoken.session.SaSession;
|
||||
import cn.dev33.satoken.stp.SaLoginParameter;
|
||||
import cn.dev33.satoken.stp.SaTokenInfo;
|
||||
import cn.dev33.satoken.stp.StpLogic;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.dev33.satoken.util.SaFoxUtil;
|
||||
import cn.dev33.satoken.util.SaTokenConsts;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Sa-Token 整合 jwt -- Mixin 混入模式
|
||||
*
|
||||
@ -274,7 +275,7 @@ public class StpLogicJwtForMixin extends StpLogic {
|
||||
* @return /
|
||||
*/
|
||||
@Override
|
||||
public int getConfigOfMaxTryTimes() {
|
||||
public int getConfigOfMaxTryTimes(SaLoginParameter loginParameter) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@ -15,16 +15,14 @@
|
||||
*/
|
||||
package cn.dev33.satoken.core.stp;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import cn.dev33.satoken.stp.SaLoginConfig;
|
||||
import cn.dev33.satoken.stp.SaLoginParameter;
|
||||
import cn.dev33.satoken.stp.SaTokenInfo;
|
||||
import cn.dev33.satoken.util.SaTokenConsts;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Token 参数扩展
|
||||
@ -66,15 +64,15 @@ public class TokenInfoTest {
|
||||
|
||||
@Test
|
||||
public void testLoginParameter() {
|
||||
Assertions.assertEquals(SaLoginConfig.setDevice("PC").getDevice(), "PC");
|
||||
Assertions.assertEquals(SaLoginConfig.setIsLastingCookie(false).getIsLastingCookie(), false);
|
||||
Assertions.assertEquals(SaLoginConfig.setTimeout(1600).getTimeout(), 1600);
|
||||
Assertions.assertEquals(SaLoginConfig.setToken("token-xxx").getToken(), "token-xxx");
|
||||
Assertions.assertEquals(SaLoginConfig.setExtra("age", 18).getExtra("age"), 18);
|
||||
Assertions.assertEquals(new SaLoginParameter().setDevice("PC").getDevice(), "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");
|
||||
Assertions.assertEquals(new SaLoginParameter().setExtra("age", 18).getExtra("age"), 18);
|
||||
|
||||
Map<String, Object> extraData = new HashMap<>();
|
||||
extraData.put("age", 20);
|
||||
SaLoginParameter lm = SaLoginConfig.setExtraData(extraData);
|
||||
SaLoginParameter lm = new SaLoginParameter().setExtraData(extraData);
|
||||
Assertions.assertEquals(lm.getExtraData(), extraData);
|
||||
Assertions.assertEquals(lm.getExtra("age"), 20);
|
||||
Assertions.assertTrue(lm.isSetExtraData());
|
||||
@ -84,7 +82,6 @@ public class TokenInfoTest {
|
||||
SaLoginParameter loginParameter = SaLoginParameter
|
||||
.create()
|
||||
.setTimeout(-1);
|
||||
loginParameter.build();
|
||||
Assertions.assertEquals(loginParameter.getCookieTimeout(), Integer.MAX_VALUE);
|
||||
Assertions.assertEquals(loginParameter.getDeviceOrDefault(), SaTokenConsts.DEFAULT_LOGIN_DEVICE);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user