fix(auth): JWT payload 中的 user_id 显式转 str,修复 UUID 序列化 500 错误

- 数据库改为 UUID 类型后,ORM 返回 uuid.UUID 对象
- jwt.encode 内部用 json.dumps 序列化,不支持 UUID 类型
- 业界主流做法:调用处 str(user.id) 转换,不在工具函数里做递归序列化
This commit is contained in:
小鱼开发
2026-05-08 16:30:38 +08:00
parent 5547844aa3
commit d1e7bffc4d
+4 -4
View File
@@ -209,8 +209,8 @@ async def login_with_sms(
await _kick_old_device(user.id)
# 5. 签发双 Token
access_token = create_access_token(data={"sub": user.id})
refresh_token = create_refresh_token(data={"sub": user.id})
access_token = create_access_token(data={"sub": str(user.id)})
refresh_token = create_refresh_token(data={"sub": str(user.id)})
refresh_token_hash = _hash_refresh_token(refresh_token)
# 6. 创建/覆盖设备记录
@@ -266,8 +266,8 @@ async def refresh_access_token(
raise ValueError("设备已失效,请重新登录")
# 3. 生成新 Token 对
new_access_token = create_access_token(data={"sub": user_id})
new_refresh_token = create_refresh_token(data={"sub": user_id})
new_access_token = create_access_token(data={"sub": str(user_id)})
new_refresh_token = create_refresh_token(data={"sub": str(user_id)})
new_refresh_token_hash = _hash_refresh_token(new_refresh_token)
# 4. 更新设备记录