From d45d404fa06f98a9dc8b763e8dac6263ef106441 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sat, 30 Apr 2022 08:21:04 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=20sa-token-jwt=20=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../satoken/exception/ApiDisabledException.java | 2 +- .../satoken/exception/NotLoginException.java | 2 +- .../dev33/satoken/listener/SaTokenListener.java | 3 ++- .../listener/SaTokenListenerDefaultImpl.java | 2 +- .../java/cn/dev33/satoken/stp/StpLogic.java | 2 +- .../sa-token-demo-sso3-client-nosdk/pom.xml | 13 ++++++------- .../main/java/com/pj/sso/SsoRequestUtil.java | 17 +++-------------- .../java/cn/dev33/satoken/jwt/SaJwtUtil.java | 2 +- .../satoken/jwt/StpLogicJwtForStateless.java | 15 ++++++++------- 9 files changed, 24 insertions(+), 34 deletions(-) diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/ApiDisabledException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/ApiDisabledException.java index a4779fd2..052a456d 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/ApiDisabledException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/ApiDisabledException.java @@ -12,7 +12,7 @@ public class ApiDisabledException extends SaTokenException { private static final long serialVersionUID = 6806129545290130133L; /** 异常提示语 */ - public static final String BE_MESSAGE = "This API is disabled"; + public static final String BE_MESSAGE = "this api is disabled"; /** * 一个异常:代表 API 已被禁用 diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java index 80a07abd..751b245c 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java @@ -26,7 +26,7 @@ public class NotLoginException extends SaTokenException { /** 表示未提供token */ public static final String NOT_TOKEN = "-1"; - public static final String NOT_TOKEN_MESSAGE = "未提供Token"; + public static final String NOT_TOKEN_MESSAGE = "未能读取到有效Token"; /** 表示token无效 */ public static final String INVALID_TOKEN = "-2"; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java index f2dbea40..4fdff910 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java @@ -14,9 +14,10 @@ public interface SaTokenListener { * 每次登录时触发 * @param loginType 账号类别 * @param loginId 账号id + * @param tokenValue 本次登录产生的 token 值 * @param loginModel 登录参数 */ - public void doLogin(String loginType, Object loginId, SaLoginModel loginModel); + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel); /** * 每次注销时触发 diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerDefaultImpl.java index 45b70079..d895b658 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerDefaultImpl.java @@ -17,7 +17,7 @@ public class SaTokenListenerDefaultImpl implements SaTokenListener { * 每次登录时触发 */ @Override - public void doLogin(String loginType, Object loginId, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { println("账号[" + loginId + "]登录成功"); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java index 14291d90..84d0556e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java @@ -350,7 +350,7 @@ public class StpLogic { setLastActivityToNow(tokenValue); // $$ 通知监听器,账号xxx 登录成功 - SaManager.getSaTokenListener().doLogin(loginType, id, loginModel); + SaManager.getSaTokenListener().doLogin(loginType, id, tokenValue, loginModel); // 检查此账号会话数量是否超出最大值 if(config.getMaxLoginCount() != -1) { diff --git a/sa-token-demo/sa-token-demo-sso3-client-nosdk/pom.xml b/sa-token-demo/sa-token-demo-sso3-client-nosdk/pom.xml index 1fbd8d5d..b4e0ba3c 100644 --- a/sa-token-demo/sa-token-demo-sso3-client-nosdk/pom.xml +++ b/sa-token-demo/sa-token-demo-sso3-client-nosdk/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 2.0.0.RELEASE + 2.5.12 @@ -22,13 +22,12 @@ spring-boot-starter-web - - - com.ejlchina - okhttps - 3.1.1 + + + com.dtflys.forest + forest-spring-boot-starter + 1.5.19 - diff --git a/sa-token-demo/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoRequestUtil.java b/sa-token-demo/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoRequestUtil.java index 81e17dc7..02ec5fb7 100644 --- a/sa-token-demo/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoRequestUtil.java +++ b/sa-token-demo/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoRequestUtil.java @@ -1,14 +1,12 @@ package com.pj.sso; -import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.MessageDigest; import java.util.Map; import java.util.Random; -import com.ejlchina.okhttps.OkHttps; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.dtflys.forest.Forest; import com.pj.sso.util.AjaxJson; /** @@ -62,18 +60,9 @@ public class SsoRequestUtil { * @param url 请求地址 * @return 返回的结果 */ - @SuppressWarnings("unchecked") public static AjaxJson request(String url) { - String body = OkHttps.sync(url) - .post() - .getBody() - .toString(); - try { - Map map = new ObjectMapper().readValue(body, Map.class); - return new AjaxJson(map); - } catch (IOException e) { - throw new RuntimeException(e); - } + Map map = Forest.post(url).executeAsMap(); + return new AjaxJson(map); } /** diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtUtil.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtUtil.java index 80dc2b02..b7472101 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtUtil.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtUtil.java @@ -55,7 +55,7 @@ public class SaJwtUtil { // 构建 String token = JWT.create() .setPayload(LOGIN_ID, loginId) - // 混入随机字符 + // 混入随机字符串,防止每次生成的 token 都是一样的 .setPayload("rn", SaFoxUtil.getRandomString(32)) .addPayloads(extraData) .setKey(keyt.getBytes()) diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java index 785114f7..658e8633 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java @@ -82,11 +82,13 @@ public class StpLogicJwtForStateless extends StpLogic { // ------------------- 登录相关操作 ------------------- /** - * 会话登录,并指定所有登录参数Model + * 创建指定账号id的登录会话 + * @param id 登录id,建议的类型:(long | int | String) + * @param loginModel 此次登录的参数Model + * @return 返回会话令牌 */ @Override - public void login(Object id, SaLoginModel loginModel) { - + public String createLoginSession(Object id, SaLoginModel loginModel) { SaTokenException.throwByNull(id, "账号id不能为空"); // ------ 1、初始化 loginModel @@ -95,11 +97,10 @@ public class StpLogicJwtForStateless extends StpLogic { // ------ 2、生成一个token String tokenValue = createTokenValue(id, loginModel.getDeviceOrDefault(), loginModel.getTimeout(), loginModel.getExtraData()); - // 3、在当前会话写入tokenValue - setTokenValue(tokenValue, loginModel.getCookieTimeout()); - // $$ 通知监听器,账号xxx 登录成功 - SaManager.getSaTokenListener().doLogin(loginType, id, loginModel); + SaManager.getSaTokenListener().doLogin(loginType, id, tokenValue, loginModel); + + return tokenValue; } /**