31 lines
1.1 KiB
Python
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) |