v2.4.1: 修复 2FA 登录和前端数据加载问题
- 修复登录接口 response_model 导致 2FA 返回格式验证失败(500错误) - 修复 showProfile 未调用 loadTwofaStatus 导致 2FA 状态一直显示加载中 - 修复 hideOthers 默认值为 false 确保管理员可查看所有数据 - 删除重复的 doLogin 函数 - 删除残留的代码片段修复 JavaScript 语法错误
This commit is contained in:
@@ -35,7 +35,7 @@ async def register(req: RegisterRequest, db: AsyncSession = Depends(get_db)):
|
||||
return RegisterResponse(message="注册请求已提交,等待管理员审批")
|
||||
|
||||
|
||||
@router.post("/login", response_model=TokenResponse)
|
||||
@router.post("/login")
|
||||
async def login(
|
||||
req: LoginRequest,
|
||||
request: Request,
|
||||
@@ -81,6 +81,17 @@ async def login(
|
||||
if user.status == "disabled":
|
||||
raise HTTPException(status_code=403, detail="账户已被禁用")
|
||||
clear_login_failures(ip, account)
|
||||
|
||||
# 检查是否启用 2FA
|
||||
if user.two_factor_enabled and user.two_factor_secret:
|
||||
# 生成临时 token,等待 2FA 验证
|
||||
from app.core.security import create_token
|
||||
temp_token = create_token(
|
||||
{"sub": str(user.id), "type": "2fa_pending"},
|
||||
timedelta(minutes=5)
|
||||
)
|
||||
return {"require_2fa": True, "temp_token": temp_token}
|
||||
|
||||
return TokenResponse(
|
||||
access_token=create_access_token(user.id),
|
||||
refresh_token=create_refresh_token(user.id),
|
||||
|
||||
Reference in New Issue
Block a user