fix(鉴权/测试): 用户态工具鉴权改开关控制(默认关)+ 修复既有测试编译与断言
- collect-data/price-track 兜底鉴权改由 aiimage.security.user-tool-guard-enabled 控制,默认 false:老客户端直连不带认证头,先开启会让线上集采/跟价全线 401, 待携带 X-Internal-Token 的新客户端铺开后再置 true - 补齐 DistributedJobLockService 构造参数缺失的 6 个测试类(双活分布式锁 commit 只改了主代码,测试已无法编译);断言按"先删 DB 行再物理删"的现语义校正
This commit is contained in:
@@ -53,8 +53,12 @@ public class AdminApiGuardFilter extends OncePerRequestFilter {
|
||||
|
||||
/**
|
||||
* 用户态工具接口前缀:controller 无方法级鉴权(归属由请求参数 user_id 判定),
|
||||
* 匿名可达即越权读写他人数据。纳入兜底要求 JWT 或可信内部令牌(2026-09-12)。
|
||||
* 桌面 Python 直连调用已同步携带 X-Internal-Token。
|
||||
* 匿名可达即越权读写他人数据。**默认不纳入兜底**,由
|
||||
* aiimage.security.user-tool-guard-enabled 开关控制(默认 false = 行为不变)。
|
||||
*
|
||||
* <p>原因:桌面客户端(Python)直连这些接口且不带任何认证头,先于客户端发布开启会
|
||||
* 让线上集采/跟价全线 401。待携带 X-Internal-Token 的新客户端铺开后,把开关置 true
|
||||
* (或把这些前缀从 USER_TOOL_PREFIXES 移除、直接无条件纳入)即可完成收紧。
|
||||
*/
|
||||
private static final String[] USER_TOOL_PREFIXES = {
|
||||
"/api/collect-data",
|
||||
@@ -67,6 +71,13 @@ public class AdminApiGuardFilter extends OncePerRequestFilter {
|
||||
@Value("${aiimage.security.admin-guard-enabled:true}")
|
||||
private boolean enabled;
|
||||
|
||||
/**
|
||||
* 用户态工具前缀(collect-data/price-track)是否纳入兜底鉴权。
|
||||
* 默认 false:老客户端直连不带认证头,先开启会打断线上任务;新客户端铺开后置 true。
|
||||
*/
|
||||
@Value("${aiimage.security.user-tool-guard-enabled:false}")
|
||||
private boolean userToolGuardEnabled;
|
||||
|
||||
@Value("${aiimage.security.admin-guard-exempt-prefixes:}")
|
||||
private String exemptPrefixes;
|
||||
|
||||
@@ -121,10 +132,13 @@ public class AdminApiGuardFilter extends OncePerRequestFilter {
|
||||
}
|
||||
|
||||
/** 命中受保护前缀(/api/admin、/debug、用户态工具前缀及其子路径)才进入鉴权,其余请求直接放行。 */
|
||||
private static boolean isGuarded(String uri) {
|
||||
private boolean isGuarded(String uri) {
|
||||
if (matchesPrefix(uri, ADMIN_API_PREFIX) || matchesPrefix(uri, DEBUG_PREFIX)) {
|
||||
return true;
|
||||
}
|
||||
if (!userToolGuardEnabled) {
|
||||
return false;
|
||||
}
|
||||
for (String prefix : USER_TOOL_PREFIXES) {
|
||||
if (matchesPrefix(uri, prefix)) {
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user