mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-05-02 20:02:45 +08:00
移除 SaLogInput 组件
This commit is contained in:
parent
2abd152218
commit
6dc9be8cd7
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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) {}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -17,7 +17,7 @@ sa-token:
|
||||
# token风格
|
||||
token-style: uuid
|
||||
# 是否输出操作日志
|
||||
is-log: false
|
||||
is-log: true
|
||||
|
||||
solon:
|
||||
# redis配置
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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 /
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
|
@ -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 /
|
||||
|
Loading…
Reference in New Issue
Block a user