1
0
mirror of synced 2026-05-22 14:43:15 +00:00

refactor: 重构所有 rpc 组件的 SaTokenContext 上下文读写策略 & 删除二级上下文模块

This commit is contained in:
click33
2025-04-07 05:41:30 +08:00
parent c6a081ebf6
commit 3acc7bd7af
50 changed files with 526 additions and 585 deletions
@@ -15,11 +15,11 @@
*/
package cn.dev33.satoken.servlet.util;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage.Box;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
import cn.dev33.satoken.context.model.SaTokenContextModelBox;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.servlet.model.SaRequestForServlet;
import cn.dev33.satoken.servlet.model.SaResponseForServlet;
@@ -45,14 +45,14 @@ public class SaTokenContextUtil {
SaRequest req = new SaRequestForServlet(request);
SaResponse res = new SaResponseForServlet(response);
SaStorage stg = new SaStorageForServlet(request);
SaTokenContextForThreadLocalStorage.setBox(req, res, stg);
SaManager.getSaTokenContext().setContext(req, res, stg);
}
/**
* 清除当前上下文
*/
public static void clearContext() {
SaTokenContextForThreadLocalStorage.clearBox();
SaManager.getSaTokenContext().clearContext();
}
/**
@@ -71,11 +71,11 @@ public class SaTokenContextUtil {
}
/**
* 获取当前 Box
* 获取当前 ModelBox
* @return /
*/
public static Box getBox() {
return SaTokenContextForThreadLocalStorage.getBoxNotNull();
public static SaTokenContextModelBox getModelBox() {
return SaManager.getSaTokenContext().getModelBox();
}
/**
@@ -83,8 +83,7 @@ public class SaTokenContextUtil {
* @return /
*/
public static HttpServletRequest getRequest() {
Box box = SaTokenContextForThreadLocalStorage.getBoxNotNull();
return (HttpServletRequest) box.getRequest().getSource();
return (HttpServletRequest) getModelBox().getRequest().getSource();
}
/**
@@ -92,8 +91,7 @@ public class SaTokenContextUtil {
* @return /
*/
public static HttpServletResponse getResponse() {
Box box = SaTokenContextForThreadLocalStorage.getBoxNotNull();
return (HttpServletResponse) box.getResponse().getSource();
return (HttpServletResponse) getModelBox().getResponse().getSource();
}
}
@@ -15,7 +15,7 @@
*/
package cn.dev33.satoken.jboot;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.SaTokenContextForReadOnly;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
@@ -28,7 +28,7 @@ import io.jboot.web.controller.JbootControllerContext;
/**
* Sa-Token 上线文处理器 [Jboot 版本实现]
*/
public class SaTokenContextForJboot implements SaTokenContext {
public class SaTokenContextForJboot implements SaTokenContextForReadOnly {
public SaTokenContextForJboot() {
// 重写路由匹配算法
@@ -63,6 +63,6 @@ public class SaTokenContextForJboot implements SaTokenContext {
@Override
public boolean isValid() {
return SaTokenContext.super.isValid();
return JbootControllerContext.get() != null;
}
}
@@ -15,7 +15,7 @@
*/
package cn.dev33.satoken.jfinal;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.SaTokenContextForReadOnly;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
@@ -27,7 +27,7 @@ import cn.dev33.satoken.strategy.SaStrategy;
/**
* Sa-Token 上线文处理器 [Jfinal 版本实现]
*/
public class SaTokenContextForJfinal implements SaTokenContext {
public class SaTokenContextForJfinal implements SaTokenContextForReadOnly {
public SaTokenContextForJfinal() {
// 重写路由匹配算法
@@ -62,6 +62,7 @@ public class SaTokenContextForJfinal implements SaTokenContext {
@Override
public boolean isValid() {
return SaTokenContext.super.isValid();
return SaControllerContext.get() != null;
}
}
@@ -15,11 +15,11 @@
*/
package cn.dev33.satoken.reactor.context;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage.Box;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
import cn.dev33.satoken.context.model.SaTokenContextModelBox;
import cn.dev33.satoken.fun.SaRetGenericFunction;
import cn.dev33.satoken.reactor.model.SaRequestForReactor;
import cn.dev33.satoken.reactor.model.SaResponseForReactor;
@@ -42,14 +42,14 @@ public class SaReactorSyncHolder {
SaRequest request = new SaRequestForReactor(exchange.getRequest());
SaResponse response = new SaResponseForReactor(exchange.getResponse());
SaStorage storage = new SaStorageForReactor(exchange);
SaTokenContextForThreadLocalStorage.setBox(request, response, storage);
SaManager.getSaTokenContext().setContext(request, response, storage);
}
/**
* 在同步上下文清除 ServerWebExchange
*/
public static void clearContext() {
SaTokenContextForThreadLocalStorage.clearBox();
SaManager.getSaTokenContext().clearContext();
}
/**
@@ -57,7 +57,7 @@ public class SaReactorSyncHolder {
* @return /
*/
public static ServerWebExchange getExchange() {
Box box = SaTokenContextForThreadLocalStorage.getBoxNotNull();
SaTokenContextModelBox box = SaManager.getSaTokenContext().getModelBox();
return (ServerWebExchange)box.getStorage().getSource();
}
@@ -15,11 +15,11 @@
*/
package cn.dev33.satoken.reactor.context;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage.Box;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
import cn.dev33.satoken.context.model.SaTokenContextModelBox;
import cn.dev33.satoken.fun.SaRetGenericFunction;
import cn.dev33.satoken.reactor.model.SaRequestForReactor;
import cn.dev33.satoken.reactor.model.SaResponseForReactor;
@@ -42,14 +42,14 @@ public class SaReactorSyncHolder {
SaRequest request = new SaRequestForReactor(exchange.getRequest());
SaResponse response = new SaResponseForReactor(exchange.getResponse());
SaStorage storage = new SaStorageForReactor(exchange);
SaTokenContextForThreadLocalStorage.setBox(request, response, storage);
SaManager.getSaTokenContext().setContext(request, response, storage);
}
/**
* 在同步上下文清除 ServerWebExchange
*/
public static void clearContext() {
SaTokenContextForThreadLocalStorage.clearBox();
SaManager.getSaTokenContext().clearContext();
}
/**
@@ -57,7 +57,7 @@ public class SaReactorSyncHolder {
* @return /
*/
public static ServerWebExchange getExchange() {
Box box = SaTokenContextForThreadLocalStorage.getBoxNotNull();
SaTokenContextModelBox box = SaManager.getSaTokenContext().getModelBox();
return (ServerWebExchange)box.getStorage().getSource();
}
@@ -15,11 +15,11 @@
*/
package cn.dev33.satoken.servlet.util;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage.Box;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
import cn.dev33.satoken.context.model.SaTokenContextModelBox;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.servlet.model.SaRequestForServlet;
import cn.dev33.satoken.servlet.model.SaResponseForServlet;
@@ -45,14 +45,14 @@ public class SaTokenContextUtil {
SaRequest req = new SaRequestForServlet(request);
SaResponse res = new SaResponseForServlet(response);
SaStorage stg = new SaStorageForServlet(request);
SaTokenContextForThreadLocalStorage.setBox(req, res, stg);
SaManager.getSaTokenContext().setContext(req, res, stg);
}
/**
* 清除当前上下文
*/
public static void clearContext() {
SaTokenContextForThreadLocalStorage.clearBox();
SaManager.getSaTokenContext().clearContext();
}
/**
@@ -71,11 +71,11 @@ public class SaTokenContextUtil {
}
/**
* 获取当前 Box
* 获取当前 ModelBox
* @return /
*/
public static Box getBox() {
return SaTokenContextForThreadLocalStorage.getBoxNotNull();
public static SaTokenContextModelBox getModelBox() {
return SaManager.getSaTokenContext().getModelBox();
}
/**
@@ -83,8 +83,7 @@ public class SaTokenContextUtil {
* @return /
*/
public static HttpServletRequest getRequest() {
Box box = SaTokenContextForThreadLocalStorage.getBoxNotNull();
return (HttpServletRequest) box.getRequest().getSource();
return (HttpServletRequest) getModelBox().getRequest().getSource();
}
/**
@@ -92,8 +91,7 @@ public class SaTokenContextUtil {
* @return /
*/
public static HttpServletResponse getResponse() {
Box box = SaTokenContextForThreadLocalStorage.getBoxNotNull();
return (HttpServletResponse) box.getResponse().getSource();
return (HttpServletResponse) getModelBox().getResponse().getSource();
}
}
@@ -21,7 +21,6 @@ import cn.dev33.satoken.apikey.SaApiKeyTemplate;
import cn.dev33.satoken.apikey.loader.SaApiKeyDataLoader;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.second.SaTokenSecondContextCreator;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.httpauth.basic.SaHttpBasicTemplate;
import cn.dev33.satoken.httpauth.basic.SaHttpBasicUtil;
@@ -121,17 +120,6 @@ public class SaBeanInject {
SaManager.setSaTokenContext(saTokenContext);
}
/**
* 注入二级上下文Bean
*
* @param saTokenSecondContextCreator 二级上下文创建器
*/
@Condition(onBean = SaTokenSecondContextCreator.class)
@Bean
public void setSaTokenContext(SaTokenSecondContextCreator saTokenSecondContextCreator) {
SaManager.setSaTokenSecondContext(saTokenSecondContextCreator.create());
}
/**
* 注入侦听器Bean
*
@@ -15,7 +15,7 @@
*/
package cn.dev33.satoken.solon.model;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.SaTokenContextForReadOnly;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
@@ -27,7 +27,7 @@ import org.noear.solon.core.handle.Context;
* @author noear
* @since 1.4
*/
public class SaContextForSolon implements SaTokenContext {
public class SaContextForSolon implements SaTokenContextForReadOnly {
/**
* 获取当前请求的Request对象
@@ -15,11 +15,11 @@
*/
package cn.dev33.satoken.solon.util;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage;
import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage.Box;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
import cn.dev33.satoken.context.model.SaTokenContextModelBox;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.solon.model.SaRequestForSolon;
import cn.dev33.satoken.solon.model.SaResponseForSolon;
@@ -41,14 +41,14 @@ public class SaTokenContextUtil {
SaRequest req = new SaRequestForSolon(ctx);
SaResponse res = new SaResponseForSolon(ctx);
SaStorage stg = new SaStorageForSolon(ctx);
SaTokenContextForThreadLocalStorage.setBox(req, res, stg);
SaManager.getSaTokenContext().setContext(req, res, stg);
}
/**
* 清除当前上下文
*/
public static void clearContext() {
SaTokenContextForThreadLocalStorage.clearBox();
SaManager.getSaTokenContext().clearContext();
}
/**
@@ -66,11 +66,11 @@ public class SaTokenContextUtil {
}
/**
* 获取当前 Box
* 获取当前 ModelBox
* @return /
*/
public static Box getBox() {
return SaTokenContextForThreadLocalStorage.getBoxNotNull();
public static SaTokenContextModelBox getModelBox() {
return SaManager.getSaTokenContext().getModelBox();
}
/**
@@ -78,8 +78,7 @@ public class SaTokenContextUtil {
* @return /
*/
public static Context getContext() {
Box box = SaTokenContextForThreadLocalStorage.getBoxNotNull();
return (Context) box.getStorage().getSource();
return (Context) getModelBox().getStorage().getSource();
}
}
@@ -21,7 +21,6 @@ import cn.dev33.satoken.apikey.SaApiKeyTemplate;
import cn.dev33.satoken.apikey.loader.SaApiKeyDataLoader;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.second.SaTokenSecondContextCreator;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.httpauth.basic.SaHttpBasicTemplate;
import cn.dev33.satoken.httpauth.basic.SaHttpBasicUtil;
@@ -115,16 +114,6 @@ public class SaBeanInject {
SaManager.setSaTokenContext(saTokenContext);
}
/**
* 注入二级上下文Bean
*
* @param saTokenSecondContextCreator 二级上下文创建器
*/
@Autowired(required = false)
public void setSaTokenContext(SaTokenSecondContextCreator saTokenSecondContextCreator) {
SaManager.setSaTokenSecondContext(saTokenSecondContextCreator.create());
}
/**
* 注入侦听器Bean
*
@@ -15,7 +15,7 @@
*/
package cn.dev33.satoken.spring;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.SaTokenContextForReadOnly;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
@@ -31,7 +31,7 @@ import cn.dev33.satoken.servlet.model.SaStorageForServlet;
* @author click33
* @since 1.19.0
*/
public class SaTokenContextForSpring implements SaTokenContext {
public class SaTokenContextForSpring implements SaTokenContextForReadOnly {
/**
* 获取当前请求的 Request 包装对象
@@ -15,7 +15,7 @@
*/
package cn.dev33.satoken.spring;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.SaTokenContextForReadOnly;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
@@ -31,7 +31,7 @@ import cn.dev33.satoken.servlet.model.SaStorageForServlet;
* @author click33
* @since 1.34.0
*/
public class SaTokenContextForSpringInJakartaServlet implements SaTokenContext {
public class SaTokenContextForSpringInJakartaServlet implements SaTokenContextForReadOnly {
/**
* 获取当前请求的 Request 包装对象