From 910166a49695ad327bfbf2e17068309a9e52ec91 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Thu, 1 Apr 2021 13:59:59 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.0.2=E3=80=91=E3=80=90auth=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0loginUser=E5=8F=AF=E4=BB=A5=E4=BB=8Ethreadloc?= =?UTF-8?q?al=E8=8E=B7=E5=8F=96=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/api/context/LoginUserHolder.java | 45 +++++++++++++++++++ .../roses/kernel/auth/auth/LoginUserImpl.java | 13 ++++++ 2 files changed, 58 insertions(+) create mode 100644 kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserHolder.java diff --git a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserHolder.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserHolder.java new file mode 100644 index 000000000..54ce8e514 --- /dev/null +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserHolder.java @@ -0,0 +1,45 @@ +package cn.stylefeng.roses.kernel.auth.api.context; + +import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; + +/** + * 当前登录用户的临时保存容器 + * + * @author fengshuonan + * @date 2021/3/23 17:38 + */ +public class LoginUserHolder { + + private static final ThreadLocal LONGIN_USER_HOLDER = new ThreadLocal<>(); + + /** + * set holder中内容 + * + * @author fengshuonan + * @date 2021/3/23 17:41 + */ + public static void set(LoginUser abstractLoginUser) { + LONGIN_USER_HOLDER.set(abstractLoginUser); + } + + /** + * 获取holder中的值 + * + * @author fengshuonan + * @date 2021/3/23 17:41 + */ + public static LoginUser get() { + return LONGIN_USER_HOLDER.get(); + } + + /** + * 删除保存的用户 + * + * @author fengshuonan + * @date 2021/3/23 17:42 + */ + public static void remove() { + LONGIN_USER_HOLDER.remove(); + } + +} diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginUserImpl.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginUserImpl.java index 252899d6f..1f7a148e5 100644 --- a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginUserImpl.java +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginUserImpl.java @@ -27,6 +27,7 @@ package cn.stylefeng.roses.kernel.auth.auth; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.auth.api.LoginUserApi; import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi; +import cn.stylefeng.roses.kernel.auth.api.context.LoginUserHolder; import cn.stylefeng.roses.kernel.auth.api.exception.AuthException; import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; @@ -92,6 +93,12 @@ public class LoginUserImpl implements LoginUserApi { @Override public LoginUser getLoginUser() throws AuthException { + // 先从ThreadLocal中获取 + LoginUser currentUser = LoginUserHolder.get(); + if (currentUser != null) { + return currentUser; + } + // 获取用户的token String token = getToken(); @@ -109,6 +116,12 @@ public class LoginUserImpl implements LoginUserApi { @Override public LoginUser getLoginUserNullable() { + // 先从ThreadLocal中获取 + LoginUser currentUser = LoginUserHolder.get(); + if (currentUser != null) { + return currentUser; + } + // 获取用户的token String token = null; try {