feat: 用户相关接口注释说明

This commit is contained in:
martsforever
2025-08-22 13:36:49 +08:00
parent 6ae03985bd
commit 2b3c4b9a30
+11
View File
@@ -44,7 +44,9 @@ class Token(BaseModel):
token_type: str
# 添加用户相关的端点接口
def add_user_route(app: FastAPI):
# 用户注册接口
@app.post("/registry")
async def _registry(registry_user: RegistryUser, session: AsyncSessionDep):
@@ -90,6 +92,7 @@ def add_user_route(app: FastAPI):
"active_url": active_url
}
# 验证用户账号接口
@app.get("/verify")
async def _verify(token: str, session: AsyncSessionDep):
username = CryptUtils.get_username_from_token(token)
@@ -116,6 +119,7 @@ def add_user_route(app: FastAPI):
"message": f"用户 {username} 激活成功"
}
# 登录接口
@app.post("/login")
@app.post("/token")
async def _token(session: AsyncSessionDep, form_data: OAuth2PasswordRequestForm = Depends()):
@@ -139,15 +143,18 @@ def add_user_route(app: FastAPI):
"token": token,
}
# 获取用户信息接口
@app.get("/users/me")
async def _me(current_user: PublicUser = Depends(get_current_user)):
return current_user
# 订单查询接口
@app.post("/order")
async def _query_order(product_name: str, current_user: PublicUser = Depends(get_current_user)):
return [product_name]
# 用户登录信息验证处理,验证账号密码通过会返回用户信息,否则返回None
async def authenticate_user(session: AsyncSessionDep, username: str, password: str):
query = select(UserModel).where(UserModel.username == username)
result = await session.execute(query)
@@ -166,8 +173,10 @@ async def authenticate_user(session: AsyncSessionDep, username: str, password: s
return public_user
# 用于注入token字符串
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# 当token失效或者不存在时抛出的异常
unauthorized_exception = HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="The token is invalid or had expired",
@@ -175,6 +184,7 @@ unauthorized_exception = HTTPException(
)
# 获取当前用户信息,通过注入的token来获取当前用户信息,如果token有效则返回用户信息,无效则抛出异常
async def get_current_user(session: AsyncSessionDep, token: str = Depends(oauth2_scheme)):
try:
username = CryptUtils.get_username_from_token(token)
@@ -190,6 +200,7 @@ async def get_current_user(session: AsyncSessionDep, token: str = Depends(oauth2
return PublicUser(**user_model.model_dump())
# 根据用户名获取用户信息
async def get_user_by_username(username: str, session: AsyncSessionDep):
query = (
select(UserModel)