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:
@@ -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. 更新设备记录
|
||||
|
||||
Reference in New Issue
Block a user