我是 FastAPI 的新手,尝试从基于 oauth2_scheme 的请求中获取令牌,但令牌未定义,我在下面提供一个片段:
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="api/token")
def get_current_user(token: str = Depends(oauth2_scheme)):
"""
Get the current user from the JWT token.
"""
print("+++++++++++++++++++++++++++++++++++++")
print(token)
token_data = decode_access_token(token)
return {"username": token_data.username, "id": token_data.user_id}
我打印了令牌只是为了预览它,但它打印了一个未定义的内容,我做错了什么为什么oauth2_scheme无法正确提取令牌
我找到了问题的解决方案,我意识到 FastAPI 的 SwaggerUI 从 create_token 端点查找特定关键字,即“access_token”而不仅仅是“token”。代码片段如下:
@router.post("/token")
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(form_data.username, form_data.password)
if not user:
raise token_exception()
token = create_access_token({"sub": user["username"], "id": user["id"]})
return {"access_token": token}