feat: api秘钥只能访问api接口,access token只能访问内部接口
This commit is contained in:
@@ -5,6 +5,7 @@ from fastapi.security import OAuth2PasswordRequestForm, OAuth2PasswordBearer
|
||||
from jwt import InvalidTokenError
|
||||
from sqlmodel import select
|
||||
from starlette import status
|
||||
from starlette.requests import Request
|
||||
|
||||
from app.config.env import env
|
||||
from app.model.UserModel import RegistryUser, UserModel, UserValidate, PublicUser, UserService
|
||||
@@ -154,16 +155,8 @@ def add_user_route(app: FastAPI):
|
||||
|
||||
# 获取用户信息接口
|
||||
@app.get("/users/me")
|
||||
async def _me(session: AsyncSessionDep, current_user: PublicUser = Depends(get_current_user)):
|
||||
return await UserService.query_item(
|
||||
session=session,
|
||||
row_dict={"id": current_user.id},
|
||||
)
|
||||
|
||||
# 订单查询接口
|
||||
@app.post("/order")
|
||||
async def _query_order(product_name: str, current_user: PublicUser = Depends(get_current_user)):
|
||||
return [product_name]
|
||||
async def _me(request: Request):
|
||||
return request.state.user
|
||||
|
||||
|
||||
# 用户登录信息验证处理,验证账号密码通过会返回用户信息,否则返回None
|
||||
@@ -197,11 +190,11 @@ unauthorized_exception = HTTPException(
|
||||
|
||||
|
||||
# 获取当前用户信息,通过注入的token来获取当前用户信息,如果token有效则返回用户信息,无效则抛出异常
|
||||
async def get_current_user(session: AsyncSessionDep, token: str = Depends(oauth2_scheme)):
|
||||
async def get_current_user(session: AsyncSessionDep, token: str):
|
||||
try:
|
||||
token_info: TokenInfo = CryptUtils.get_token_info(token)
|
||||
username = token_info.get('username')
|
||||
if not username or token_info.get('type') != 'access':
|
||||
if not username:
|
||||
raise unauthorized_exception
|
||||
except InvalidTokenError:
|
||||
raise unauthorized_exception
|
||||
|
||||
Reference in New Issue
Block a user