FastAPI 中的 OAuth2 密码持有者,令牌未定义

问题描述 投票:0回答:1

我是 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
1个回答
0
投票

我找到了问题的解决方案,我意识到 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}
© www.soinside.com 2019 - 2024. All rights reserved.