Files
amb_rag/backend/app/services/token_service.py
T
2026-09-01 13:00:36 +08:00

31 lines
1.1 KiB
Python

"""Token 服务:生成、哈希、加密、解密。
用于知识库和文档的 Secret URL token 管理。
"""
from app.core.security import decrypt_token, encrypt_token, generate_token, hash_token
class TokenService:
@staticmethod
def create_token_pair() -> tuple[str, str, str, str]:
"""生成 token 并返回 (token, token_hash, token_encrypted, token_hint)。
- token: 原文(仅此一次返回给用户)
- token_hash: SHA-256 哈希(存 DB,用于查询)
- token_encrypted: Fernet 加密原文(存 DB,供后台显示完整链接)
- token_hint: 末 8 位明文(存 DB,供后台识别)
"""
token = generate_token()
token_hash = hash_token(token)
token_encrypted = encrypt_token(token)
token_hint = token[-8:] if len(token) >= 8 else token
return token, token_hash, token_encrypted, token_hint
@staticmethod
def hash_token(token: str) -> str:
return hash_token(token)
@staticmethod
def decrypt_token(encrypted: str) -> str:
return decrypt_token(encrypted)