移除 SaLogInput 组件

This commit is contained in:
click33 2022-11-03 13:44:33 +08:00
parent 2abd152218
commit 6dc9be8cd7
16 changed files with 222 additions and 291 deletions

View File

@ -14,9 +14,9 @@ import cn.dev33.satoken.error.SaErrorCode;
import cn.dev33.satoken.exception.SaTokenException;
import cn.dev33.satoken.json.SaJsonTemplate;
import cn.dev33.satoken.json.SaJsonTemplateDefaultImpl;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.log.SaLog;
import cn.dev33.satoken.log.SaLogForConsole;
import cn.dev33.satoken.log.input.SaLogInput;
import cn.dev33.satoken.same.SaSameTemplate;
import cn.dev33.satoken.sign.SaSignTemplate;
import cn.dev33.satoken.sign.SaSignTemplateDefaultImpl;
@ -43,12 +43,12 @@ public class SaManager {
setConfigMethod(config);
// 打印 banner
if(config.getIsPrint()) {
if(config !=null && config.getIsPrint()) {
SaFoxUtil.printSaToken();
}
// ## 发送日志
SaManager.getLogInput().registerConfig(config);
// $$ 全局事件
SaTokenEventCenter.doSetConfig(config);
// 调用一次StpUtil中的方法保证其可以尽早的初始化 StpLogic
StpUtil.getLoginType();
@ -73,7 +73,7 @@ public class SaManager {
private volatile static SaTokenDao saTokenDao;
public static void setSaTokenDao(SaTokenDao saTokenDao) {
setSaTokenDaoMethod(saTokenDao);
SaManager.getLogInput().registerComponent("SaTokenDao", saTokenDao);
SaTokenEventCenter.doRegisterComponent("SaTokenDao", saTokenDao);
}
private static void setSaTokenDaoMethod(SaTokenDao saTokenDao) {
if((SaManager.saTokenDao instanceof SaTokenDaoDefaultImpl)) {
@ -98,7 +98,7 @@ public class SaManager {
private volatile static StpInterface stpInterface;
public static void setStpInterface(StpInterface stpInterface) {
SaManager.stpInterface = stpInterface;
SaManager.getLogInput().registerComponent("StpInterface", stpInterface);
SaTokenEventCenter.doRegisterComponent("StpInterface", stpInterface);
}
public static StpInterface getStpInterface() {
if (stpInterface == null) {
@ -117,7 +117,7 @@ public class SaManager {
private volatile static SaTokenContext saTokenContext;
public static void setSaTokenContext(SaTokenContext saTokenContext) {
SaManager.saTokenContext = saTokenContext;
SaManager.getLogInput().registerComponent("SaTokenContext", saTokenContext);
SaTokenEventCenter.doRegisterComponent("SaTokenContext", saTokenContext);
}
public static SaTokenContext getSaTokenContext() {
return saTokenContext;
@ -129,7 +129,7 @@ public class SaManager {
private volatile static SaTokenSecondContext saTokenSecondContext;
public static void setSaTokenSecondContext(SaTokenSecondContext saTokenSecondContext) {
SaManager.saTokenSecondContext = saTokenSecondContext;
SaManager.getLogInput().registerComponent("SaTokenSecondContext", saTokenSecondContext);
SaTokenEventCenter.doRegisterComponent("SaTokenSecondContext", saTokenSecondContext);
}
public static SaTokenSecondContext getSaTokenSecondContext() {
return saTokenSecondContext;
@ -165,7 +165,7 @@ public class SaManager {
private volatile static SaTempInterface saTemp;
public static void setSaTemp(SaTempInterface saTemp) {
SaManager.saTemp = saTemp;
SaManager.getLogInput().registerComponent("SaTempInterface", saTemp);
SaTokenEventCenter.doRegisterComponent("SaTempInterface", saTemp);
}
public static SaTempInterface getSaTemp() {
if (saTemp == null) {
@ -184,7 +184,7 @@ public class SaManager {
private volatile static SaJsonTemplate saJsonTemplate;
public static void setSaJsonTemplate(SaJsonTemplate saJsonTemplate) {
SaManager.saJsonTemplate = saJsonTemplate;
SaManager.getLogInput().registerComponent("SaJsonTemplate", saJsonTemplate);
SaTokenEventCenter.doRegisterComponent("SaJsonTemplate", saJsonTemplate);
}
public static SaJsonTemplate getSaJsonTemplate() {
if (saJsonTemplate == null) {
@ -203,7 +203,7 @@ public class SaManager {
private volatile static SaSignTemplate saSignTemplate;
public static void setSaSignTemplate(SaSignTemplate saSignTemplate) {
SaManager.saSignTemplate = saSignTemplate;
SaManager.getLogInput().registerComponent("SaSignTemplate", saSignTemplate);
SaTokenEventCenter.doRegisterComponent("SaSignTemplate", saSignTemplate);
}
public static SaSignTemplate getSaSignTemplate() {
if (saSignTemplate == null) {
@ -222,7 +222,7 @@ public class SaManager {
private volatile static SaSameTemplate saSameTemplate;
public static void setSaSameTemplate(SaSameTemplate saSameTemplate) {
SaManager.saSameTemplate = saSameTemplate;
SaManager.getLogInput().registerComponent("SaSameTemplate", saSameTemplate);
SaTokenEventCenter.doRegisterComponent("SaSameTemplate", saSameTemplate);
}
public static SaSameTemplate getSaSameTemplate() {
if (saSameTemplate == null) {
@ -234,33 +234,14 @@ public class SaManager {
}
return saSameTemplate;
}
/**
* 日志接收器
*/
private volatile static SaLogInput logInput;
public static void setLogInput(SaLogInput logInput) {
SaManager.logInput = logInput;
SaManager.getLogInput().registerComponent("SaLogInput", logInput);
}
public static SaLogInput getLogInput() {
if (logInput == null) {
synchronized (SaManager.class) {
if (logInput == null) {
SaManager.logInput = new SaLogInput();
}
}
}
return logInput;
}
/**
* 日志输出器
*/
public volatile static SaLog log = new SaLogForConsole();
public static void setLog(SaLog log) {
SaManager.log = log;
SaManager.getLogInput().registerComponent("SaLog", log);
SaTokenEventCenter.doRegisterComponent("SaLog", log);
}
public static SaLog getLog() {
return SaManager.log;

View File

@ -3,9 +3,11 @@ package cn.dev33.satoken.listener;
import java.util.ArrayList;
import java.util.List;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.error.SaErrorCode;
import cn.dev33.satoken.exception.SaTokenException;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpLogic;
/**
* Sa-Token 事件中心 事件发布器
@ -257,4 +259,36 @@ public class SaTokenEventCenter {
}
}
/**
* 全局组件载入
* @param comtName 组件名称
* @param comtObj 组件对象
*/
public static void doRegisterComponent(String comtName, Object comtObj) {
for (SaTokenListener listener : listenerList) {
listener.doRegisterComponent(comtName, comtObj);
}
}
/**
* StpLogic 对象替换
* @param stpLogic /
*/
public static void doSetStpLogic(StpLogic stpLogic) {
for (SaTokenListener listener : listenerList) {
listener.doSetStpLogic(stpLogic);
}
}
/**
* 载入全局配置
* @param stpLogic /
*/
public static void doSetConfig(SaTokenConfig config) {
for (SaTokenListener listener : listenerList) {
listener.doSetConfig(config);
}
}
}

View File

@ -1,6 +1,8 @@
package cn.dev33.satoken.listener;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpLogic;
/**
* Sa-Token 侦听器
@ -98,5 +100,24 @@ public interface SaTokenListener {
* @param timeout 续期时间
*/
public void doRenewTimeout(String tokenValue, Object loginId, long timeout);
/**
* 全局组件载入
* @param comtName 组件名称
* @param comtObj 组件对象
*/
public default void doRegisterComponent(String comtName, Object comtObj) {}
/**
* StpLogic 对象替换
* @param stpLogic /
*/
public default void doSetStpLogic(StpLogic stpLogic) {}
/**
* 载入全局配置
* @param stpLogic /
*/
public default void doSetConfig(SaTokenConfig config) {}
}

View File

@ -1,7 +1,11 @@
package cn.dev33.satoken.listener;
import cn.dev33.satoken.SaManager;
import static cn.dev33.satoken.SaManager.log;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.util.SaFoxUtil;
/**
* Sa-Token 侦听器实现Log 打印
@ -16,7 +20,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) {
SaManager.getLogInput().doLogin(loginType, loginId, tokenValue, loginModel);
log.info("账号 {} 登录成功 (loginType={}), 会话凭证Token={}", loginId, loginType, tokenValue);
}
/**
@ -24,7 +28,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doLogout(String loginType, Object loginId, String tokenValue) {
SaManager.getLogInput().doLogout(loginType, loginId, tokenValue);
log.info("账号 {} 注销登录 (loginType={}), 会话凭证Token={}", loginId, loginType, tokenValue);
}
/**
@ -32,7 +36,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doKickout(String loginType, Object loginId, String tokenValue) {
SaManager.getLogInput().doKickout(loginType, loginId, tokenValue);
log.info("账号 {} 被踢下线 (loginType={}), 会话凭证Token={}", loginId, loginType, tokenValue);
}
/**
@ -40,7 +44,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doReplaced(String loginType, Object loginId, String tokenValue) {
SaManager.getLogInput().doReplaced(loginType, loginId, tokenValue);
log.info("账号 {} 被顶下线 (loginType={}), 会话凭证Token={}", loginId, loginType, tokenValue);
}
/**
@ -48,7 +52,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doDisable(String loginType, Object loginId, String service, int level, long disableTime) {
SaManager.getLogInput().doDisable(loginType, loginId, service, level, disableTime);
log.info("账号 {} [{}服务] 被封禁 (loginType={}), 封禁等级={}, 解封时间为 {}", loginId, loginType, service, level, SaFoxUtil.formatAfterDate(disableTime * 1000));
}
/**
@ -56,7 +60,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doUntieDisable(String loginType, Object loginId, String service) {
SaManager.getLogInput().doUntieDisable(loginType, loginId, service);
log.info("账号 {} [{}服务] 解封成功 (loginType={})", loginId, service, loginType);
}
/**
@ -64,7 +68,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doOpenSafe(String loginType, String tokenValue, String service, long safeTime) {
SaManager.getLogInput().doOpenSafe(loginType, tokenValue, service, safeTime);
log.info("Token 二级认证成功, 业务标识={}, 有效期={}秒, Token值={}", service, safeTime, tokenValue);
}
/**
@ -72,7 +76,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doCloseSafe(String loginType, String tokenValue, String service) {
SaManager.getLogInput().doCloseSafe(loginType, tokenValue, service);
log.info("Token 二级认证关闭, 业务标识={}, Token值={}", service, tokenValue);
}
/**
@ -80,7 +84,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doCreateSession(String id) {
SaManager.getLogInput().doCreateSession(id);
log.info("SaSession [{}] 创建成功", id);
}
/**
@ -88,7 +92,7 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doLogoutSession(String id) {
SaManager.getLogInput().doLogoutSession(id);
log.info("SaSession [{}] 注销成功", id);
}
/**
@ -96,8 +100,41 @@ public class SaTokenListenerForLog implements SaTokenListener {
*/
@Override
public void doRenewTimeout(String tokenValue, Object loginId, long timeout) {
SaManager.getLogInput().doRenewTimeout(tokenValue, loginId, timeout);
log.info("Token 续期成功, {} 秒后到期, 帐号={}, Token值={} ", timeout, loginId, tokenValue);
}
/**
* 全局组件载入
* @param comtName 组件名称
* @param comtObj 组件对象
*/
@Override
public void doRegisterComponent(String comtName, Object comtObj) {
String canonicalName = comtObj == null ? null : comtObj.getClass().getCanonicalName();
log.info("全局组件 {} 载入成功: {}", comtName, canonicalName);
}
/**
* StpLogic 对象替换
* @param stpLogic /
*/
@Override
public void doSetStpLogic(StpLogic stpLogic) {
if(stpLogic != null) {
log.info("会话组件 StpLogic(type={}) 重置成功: {}", stpLogic.getLoginType(), stpLogic.getClass());
}
}
/**
* 载入全局配置
* @param stpLogic /
*/
@Override
public void doSetConfig(SaTokenConfig config) {
if(config != null) {
log.info("全局配置 {} ", config);
}
}
}

View File

@ -1,160 +0,0 @@
package cn.dev33.satoken.log.input;
import static cn.dev33.satoken.SaManager.log;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.util.SaFoxUtil;
/**
* Sa-Token 日志接受器
*
* @author kong
* @since 2022-11-1
*/
public class SaLogInput {
/**
* 账号登录
* @param loginType 账号类别
* @param loginId 账号id
* @param tokenValue 本次登录产生的 token
* @param loginModel 登录参数
*/
public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) {
log.info("账号 {} 登录成功 (loginType={}), 会话凭证Token={}", loginId, loginType, tokenValue);
}
/**
* 每次注销时触发
* @param loginType 账号类别
* @param loginId 账号id
* @param tokenValue token值
*/
public void doLogout(String loginType, Object loginId, String tokenValue) {
log.info("账号 {} 注销登录 (loginType={}), 会话凭证Token={}", loginId, loginType, tokenValue);
}
/**
* 每次被踢下线时触发
* @param loginType 账号类别
* @param loginId 账号id
* @param tokenValue token值
*/
public void doKickout(String loginType, Object loginId, String tokenValue) {
log.info("账号 {} 被踢下线 (loginType={}), 会话凭证Token={}", loginId, loginType, tokenValue);
}
/**
* 每次被顶下线时触发
* @param loginType 账号类别
* @param loginId 账号id
* @param tokenValue token值
*/
public void doReplaced(String loginType, Object loginId, String tokenValue) {
log.info("账号 {} 被顶下线 (loginType={}), 会话凭证Token={}", loginId, loginType, tokenValue);
}
/**
* 每次被封禁时触发
* @param loginType 账号类别
* @param loginId 账号id
* @param service 指定服务
* @param level 封禁等级
* @param disableTime 封禁时长单位:
*/
public void doDisable(String loginType, Object loginId, String service, int level, long disableTime) {
log.info("账号 {} [{}服务] 被封禁 (loginType={}), 封禁等级={}, 解封时间为 {}", loginId, loginType, service, level, SaFoxUtil.formatAfterDate(disableTime * 1000));
}
/**
* 每次被解封时触发
* @param loginType 账号类别
* @param loginId 账号id
* @param service 指定服务
*/
public void doUntieDisable(String loginType, Object loginId, String service) {
log.info("账号 {} [{}服务] 解封成功 (loginType={})", loginId, service, loginType);
}
/**
* 每次打开二级认证时触发
* @param loginType 账号类别
* @param tokenValue token值
* @param service 指定服务
* @param safeTime 认证时间单位
*/
public void doOpenSafe(String loginType, String tokenValue, String service, long safeTime) {
log.info("Token 二级认证成功, 业务标识={}, 有效期={}秒, Token值={}", service, safeTime, tokenValue);
}
/**
* 每次关闭二级认证时触发
* @param loginType 账号类别
* @param tokenValue token值
* @param service 指定服务
*/
public void doCloseSafe(String loginType, String tokenValue, String service) {
log.info("Token 二级认证关闭, 业务标识={}, Token值={}", service, tokenValue);
}
/**
* 每次创建Session时触发
* @param id SessionId
*/
public void doCreateSession(String id) {
log.info("SaSession [{}] 创建成功", id);
}
/**
* 每次注销Session时触发
* @param id SessionId
*/
public void doLogoutSession(String id) {
log.info("SaSession [{}] 注销成功", id);
}
/**
* 每次Token续期时触发
*
* @param tokenValue token
* @param loginId 账号id
* @param timeout 续期时间
*/
public void doRenewTimeout(String tokenValue, Object loginId, long timeout) {
log.info("Token 续期成功, {} 秒后到期, 帐号={}, Token值={} ", timeout, loginId, tokenValue);
}
/**
* 全局组件载入
* @param comtName 组件名称
* @param comtObj 组件对象
*/
public void registerComponent(String comtName, Object comtObj) {
String canonicalName = comtObj == null ? null : comtObj.getClass().getCanonicalName();
log.info("全局组件 {} 载入成功: {}", comtName, canonicalName);
}
/**
* StpLogic 对象替换
* @param stpLogic /
*/
public void replaceStpLogic(StpLogic stpLogic) {
if(stpLogic != null) {
log.info("会话组件 StpLogic(type={}) 重置成功: {}", stpLogic.getLoginType(), stpLogic.getClass());
}
}
/**
* 载入全局配置
* @param stpLogic /
*/
public void registerConfig(SaTokenConfig config) {
if(config != null) {
log.info("全局配置 {} ", config);
}
}
}

View File

@ -4,6 +4,7 @@ import java.util.List;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.session.SaSession;
/**
@ -48,8 +49,8 @@ public class StpUtil {
// 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic
SaManager.putStpLogic(newStpLogic);
// ## 发送日志
SaManager.getLogInput().replaceStpLogic(stpLogic);
// $$ 全局事件
SaTokenEventCenter.doSetStpLogic(stpLogic);
}
/**

View File

@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.SaTokenInfo;
@ -54,8 +55,8 @@ public class StpUserUtil {
// 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic
SaManager.putStpLogic(newStpLogic);
// ## 发送日志
SaManager.getLogInput().replaceStpLogic(stpLogic);
// $$ 全局事件
SaTokenEventCenter.doSetStpLogic(stpLogic);
}
/**

View File

@ -1,17 +1,19 @@
package com.pj;
import cn.dev33.satoken.SaManager;
import org.noear.solon.Solon;
import cn.dev33.satoken.SaManager;
/**
* sa-token整合 solon 示例
* @author noear
*
*/
public class SaTokenDemoApp {
public static void main(String[] args) {
Solon.start(SaTokenDemoApp.class, args);
System.out.println("\n启动成功sa-token配置如下" + SaManager.getConfig());
System.out.println("\n启动成功Sa-Token配置如下" + SaManager.getConfig());
}
}

View File

@ -0,0 +1,34 @@
package com.pj.satoken;
import org.noear.solon.annotation.Component;
import org.noear.solon.core.util.PrintUtil;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.log.SaLog;
import cn.dev33.satoken.log.SaLogForConsole;
import cn.dev33.satoken.util.StrFormatter;
/**
* Sa-Token log 信息转接到 Slf4j
*
* @author kong
* @since 2022-11-2
*/
@Component
public class SaLogForSolon extends SaLogForConsole implements SaLog {
/**
* 打印日志到控制台
* @param level 日志等级
* @param str 字符串
* @param args 参数列表
*/
public void println(int level, String str, Object... args) {
SaTokenConfig config = SaManager.getConfig();
if(config.getIsLog() && level >= config.getLogLevelInt()) {
PrintUtil.info(LOG_PREFIX + StrFormatter.format(str, args));
}
}
}

View File

@ -17,7 +17,7 @@ sa-token:
# token风格
token-style: uuid
# 是否输出操作日志
is-log: false
is-log: true
solon:
# redis配置

View File

@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.SaTokenInfo;
@ -54,8 +55,8 @@ public class StpUserUtil {
// 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic
SaManager.putStpLogic(newStpLogic);
// ## 发送日志
SaManager.getLogInput().replaceStpLogic(stpLogic);
// $$ 全局事件
SaTokenEventCenter.doSetStpLogic(stpLogic);
}
/**

View File

@ -19,7 +19,6 @@ import cn.dev33.satoken.json.SaJsonTemplate;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.listener.SaTokenListener;
import cn.dev33.satoken.log.SaLog;
import cn.dev33.satoken.log.input.SaLogInput;
import cn.dev33.satoken.same.SaSameTemplate;
import cn.dev33.satoken.sign.SaSignTemplate;
import cn.dev33.satoken.stp.StpInterface;
@ -37,15 +36,23 @@ import cn.dev33.satoken.temp.SaTempInterface;
public class SaBeanInject {
/**
* 注入配置Bean
* 组件注入
* <p> 为确保 Log 组件正常打印必须将 SaLog SaTokenConfig 率先初始化 </p>
*
* @param saTokenConfig 配置对象
*/
@Autowired(required = false)
public void setConfig(SaTokenConfig saTokenConfig) {
SaManager.setConfig(saTokenConfig);
public SaBeanInject(
@Autowired(required = false) SaLog log,
@Autowired(required = false) SaTokenConfig saTokenConfig
){
if(log != null) {
SaManager.setLog(log);
}
if(saTokenConfig != null) {
SaManager.setConfig(saTokenConfig);
}
}
/**
* 注入持久化Bean
*
@ -156,26 +163,6 @@ public class SaBeanInject {
SaManager.setSaSignTemplate(saSignTemplate);
}
/**
* 注入自定义的 日志输出 Bean
*
* @param log /
*/
@Autowired(required = false)
public void setLog(SaLog log) {
SaManager.setLog(log);
}
/**
* 注入自定义的 日志接受 Bean
*
* @param logInput /
*/
@Autowired(required = false)
public void setLogInput(SaLogInput logInput) {
SaManager.setLogInput(logInput);
}
/**
* 注入自定义的 StpLogic
* @param stpLogic /

View File

@ -5,7 +5,6 @@ import org.springframework.context.annotation.Bean;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.SaTokenContextForThreadLocal;
import cn.dev33.satoken.json.SaJsonTemplate;
import cn.dev33.satoken.reactor.spring.json.SaJsonTemplateForJackson;
@ -35,15 +34,7 @@ public class SaBeanRegister {
*/
@Bean
public SaTokenContext getSaTokenContext() {
return new SaTokenContextForThreadLocal() {
/**
* 重写路由匹配方法
*/
@Override
public boolean matchPath(String pattern, String path) {
return SaPathMatcherHolder.getPathMatcher().match(pattern, path);
}
};
return new SaTokenContextForSpringReactor();
}
/**

View File

@ -0,0 +1,21 @@
package cn.dev33.satoken.reactor.spring;
import cn.dev33.satoken.context.SaTokenContextForThreadLocal;
/**
* Sa-Token 上下文处理器 [ Spring Reactor 版本实现 ]
*
* @author kong
*
*/
public class SaTokenContextForSpringReactor extends SaTokenContextForThreadLocal {
/**
* 重写路由匹配方法
*/
@Override
public boolean matchPath(String pattern, String path) {
return SaPathMatcherHolder.getPathMatcher().match(pattern, path);
}
}

View File

@ -16,7 +16,6 @@ import cn.dev33.satoken.json.SaJsonTemplate;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.listener.SaTokenListener;
import cn.dev33.satoken.log.SaLog;
import cn.dev33.satoken.log.input.SaLogInput;
import cn.dev33.satoken.same.SaSameTemplate;
import cn.dev33.satoken.sign.SaSignTemplate;
import cn.dev33.satoken.solon.model.SaContextForSolon;
@ -36,8 +35,10 @@ public class XPluginImp implements Plugin {
public void start(AopContext context) {
//集成初始化
// 注入上下文Bean
SaManager.setSaTokenContext(new SaContextForSolon());
// Sa-Token 日志输出 Bean
context.getBeanAsyn(SaLog.class, bean -> {
SaManager.setLog(bean);
});
//注入配置Bean
SaTokenConfig saTokenConfig = Solon.cfg().getBean("sa-token", SaTokenConfig.class);
@ -47,6 +48,8 @@ public class XPluginImp implements Plugin {
SaManager.setConfig(bean);
});
// 注入上下文Bean
SaManager.setSaTokenContext(new SaContextForSolon());
// 注入Dao Bean
context.getBeanAsyn(SaTokenDao.class, bean -> {
@ -104,16 +107,6 @@ public class XPluginImp implements Plugin {
SaManager.setSaSignTemplate(bean);
});
// Sa-Token 日志输出 Bean
context.getBeanAsyn(SaLog.class, bean -> {
SaManager.setLog(bean);
});
// Sa-Token 日志接受 Bean
context.getBeanAsyn(SaLogInput.class, bean -> {
SaManager.setLogInput(bean);
});
// 自定义 StpLogic 对象
context.getBeanAsyn(StpLogic.class, bean -> {
StpUtil.setStpLogic(bean);

View File

@ -19,7 +19,6 @@ import cn.dev33.satoken.json.SaJsonTemplate;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.listener.SaTokenListener;
import cn.dev33.satoken.log.SaLog;
import cn.dev33.satoken.log.input.SaLogInput;
import cn.dev33.satoken.same.SaSameTemplate;
import cn.dev33.satoken.sign.SaSignTemplate;
import cn.dev33.satoken.stp.StpInterface;
@ -37,15 +36,23 @@ import cn.dev33.satoken.temp.SaTempInterface;
public class SaBeanInject {
/**
* 注入配置Bean
* 组件注入
* <p> 为确保 Log 组件正常打印必须将 SaLog SaTokenConfig 率先初始化 </p>
*
* @param saTokenConfig 配置对象
*/
@Autowired(required = false)
public void setConfig(SaTokenConfig saTokenConfig) {
SaManager.setConfig(saTokenConfig);
public SaBeanInject(
@Autowired(required = false) SaLog log,
@Autowired(required = false) SaTokenConfig saTokenConfig
){
if(log != null) {
SaManager.setLog(log);
}
if(saTokenConfig != null) {
SaManager.setConfig(saTokenConfig);
}
}
/**
* 注入持久化Bean
*
@ -156,26 +163,6 @@ public class SaBeanInject {
SaManager.setSaSignTemplate(saSignTemplate);
}
/**
* 注入自定义的 日志输出 Bean
*
* @param log /
*/
@Autowired(required = false)
public void setLog(SaLog log) {
SaManager.setLog(log);
}
/**
* 注入自定义的 日志接受 Bean
*
* @param logInput /
*/
@Autowired(required = false)
public void setLogInput(SaLogInput logInput) {
SaManager.setLogInput(logInput);
}
/**
* 注入自定义的 StpLogic
* @param stpLogic /