""" 认证路由 """ from fastapi import APIRouter, Depends, HTTPException, status from fastapi.security import HTTPBearer from sqlalchemy.orm import Session from app.db.session import get_db from app.schemas.auth import UserLogin, TokenResponse, UserInfo from app.schemas.base import ResponseModel from app.services.auth_service import AuthService from app.core.security import get_current_user from app.models.user import User router = APIRouter() security = HTTPBearer() @router.post("/login", response_model=ResponseModel[TokenResponse]) async def login(login_data: UserLogin, db: Session = Depends(get_db)): """ 用户登录 - **username**: 用户名 - **password**: 密码 """ user = AuthService.authenticate_user(db, login_data.username, login_data.password) token_data = AuthService.create_user_token(user) return ResponseModel(data=TokenResponse(**token_data)) @router.get("/me", response_model=ResponseModel[UserInfo]) async def get_me(current_user: User = Depends(get_current_user)): """获取当前用户信息""" return ResponseModel(data=UserInfo.model_validate(current_user)) @router.post("/logout", response_model=ResponseModel) async def logout(): """用户登出(前端清除token即可)""" return ResponseModel(message="登出成功")