ZHIWEI666 commited on
Commit
70e4bba
·
verified ·
1 Parent(s): 16cd41c

Upload 3 files

Browse files
Files changed (2) hide show
  1. 安全认证.py +11 -9
  2. 测试脚本.py +4 -3
安全认证.py CHANGED
@@ -34,10 +34,7 @@ _DEFAULT_PASSWORD_SALT = "ComfyUI-Ranking-Salt-v1"
34
  JWT_SECRET = os.environ.get("JWT_SECRET") or _DEFAULT_JWT_SECRET
35
  PASSWORD_SALT = os.environ.get("PASSWORD_SALT") or _DEFAULT_PASSWORD_SALT
36
 
37
- if JWT_SECRET == _DEFAULT_JWT_SECRET:
38
- print("⚠️ [安全认证] JWT_SECRET 未设置环境变量,使用内置默认值(建议生产环境配置独立密钥)")
39
- if PASSWORD_SALT == _DEFAULT_PASSWORD_SALT:
40
- print("⚠️ [安全认证] PASSWORD_SALT 未设置环境变量,使用内置默认值")
41
 
42
  # Token 有效期配置(单位:秒)
43
  TOKEN_EXPIRE_SECONDS = 7 * 24 * 60 * 60 # 默认7天(向后兼容)
@@ -345,26 +342,31 @@ def verify_token_with_fallback(token: str) -> Tuple[bool, Optional[str], str]:
345
  """
346
  兼容验证:同时支持 JWT 和旧版 mock_token
347
 
 
 
 
 
348
  参数:
349
  token: Token 字符串(JWT 或 mock_token_xxx)
350
 
351
  返回:
352
  (is_valid, account, error_message)
353
-
354
- 注意:
355
- 此函数仅用于过渡期,前端全部更新后应移除
356
  """
357
- # 先尝试 JWT 验证
358
  is_valid, payload, error_msg = verify_token(token)
359
  if is_valid:
360
  return True, payload.get("sub"), ""
361
 
362
- # 降级:检查是否为旧版 mock_token
363
  if token.startswith("mock_token_"):
364
  account = token.replace("mock_token_", "")
365
  print(f"⚠️ 兼容模式:检测到旧版 mock_token,用户 {account}")
366
  return True, account, ""
367
 
 
 
 
 
368
  return False, None, error_msg
369
 
370
 
 
34
  JWT_SECRET = os.environ.get("JWT_SECRET") or _DEFAULT_JWT_SECRET
35
  PASSWORD_SALT = os.environ.get("PASSWORD_SALT") or _DEFAULT_PASSWORD_SALT
36
 
37
+ # 单实例部署时使用内置默认值即可,无需额外配置环境变量
 
 
 
38
 
39
  # Token 有效期配置(单位:秒)
40
  TOKEN_EXPIRE_SECONDS = 7 * 24 * 60 * 60 # 默认7天(向后兼容)
 
342
  """
343
  兼容验证:同时支持 JWT 和旧版 mock_token
344
 
345
+ 验证顺序:
346
+ 1. 当前 JWT_SECRET 验证
347
+ 2. 旧版 mock_token 格式兼容
348
+
349
  参数:
350
  token: Token 字符串(JWT 或 mock_token_xxx)
351
 
352
  返回:
353
  (is_valid, account, error_message)
 
 
 
354
  """
355
+ # 1. 先尝试 JWT 验证
356
  is_valid, payload, error_msg = verify_token(token)
357
  if is_valid:
358
  return True, payload.get("sub"), ""
359
 
360
+ # 2. 降级:检查是否为旧版 mock_token
361
  if token.startswith("mock_token_"):
362
  account = token.replace("mock_token_", "")
363
  print(f"⚠️ 兼容模式:检测到旧版 mock_token,用户 {account}")
364
  return True, account, ""
365
 
366
+ # 3. JWT 签名无效/过期时,提示重新登录
367
+ if error_msg == "Token 签名无效":
368
+ return False, None, "Token 已失效,请重新登录"
369
+
370
  return False, None, error_msg
371
 
372
 
测试脚本.py CHANGED
@@ -93,12 +93,13 @@ class TestAuthSecurity(unittest.TestCase):
93
 
94
  def test_mock_token_support(self):
95
  """测试:mock_token 兼容(向后兼容)"""
96
- from 安全认证 import extract_account_from_token
97
 
98
  # 旧版 mock_token 格式
99
  mock_token = "mock_token_testuser_1234567890"
100
- account = extract_account_from_token(mock_token)
101
- self.assertEqual(account, "testuser", "mock_token 应正确解析账号")
 
102
 
103
 
104
  # ==========================================
 
93
 
94
  def test_mock_token_support(self):
95
  """测试:mock_token 兼容(向后兼容)"""
96
+ from 安全认证 import verify_token_with_fallback
97
 
98
  # 旧版 mock_token 格式
99
  mock_token = "mock_token_testuser_1234567890"
100
+ is_valid, account, _ = verify_token_with_fallback(mock_token)
101
+ self.assertTrue(is_valid, "mock_token 应通过验证")
102
+ self.assertEqual(account, "testuser_1234567890", "mock_token 应正确解析账号")
103
 
104
 
105
  # ==========================================