diff --git a/app/controller/add_user_route.py b/app/controller/add_user_route.py index 7e63868..d70f205 100644 --- a/app/controller/add_user_route.py +++ b/app/controller/add_user_route.py @@ -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)