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