如何使fastapi中的可选?

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

@router.get("/{id}") def get_resource(id: str, current_user: User = Depends(get_current_user)): return return_resource(id, current_user) 严格执行此代码。我想要的是,如果用户未登录,则应将authorization参数设置为

current_user

,以便我可以允许访问公共图像并限制私有。 其他代码:

GET_CURRENT_USER

None

我想将参数像
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="auth/login")

async def get_current_user(required: bool = True, token: str = Depends(oauth2_scheme)):
  credentials_exception = HTTPException(
    status_code=status.HTTP_401_UNAUTHORIZED,
    detail="Could not validate credentials",
    headers={"WWW-Authenticate": "Bearer"},
  )

  if not required and not token:
    return None

  return verify_token(token, credentials_exception)
发送到
required

verify_token

get_current_user

	

如果我正确理解您,您可以使用包装器功能将参数传递给嵌套功能。喜欢:

def verify_token(token: str, credentials_exception):
  try:
    payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
    email: str = payload.get("email")
    pk: str = payload.get("pk")
    if email is None:
        raise credentials_exception
    token_data = TokenData(
        email=email,
        pk = pk
    )
  except JWTError:
      raise credentials_exception
  return token_data
    

python dependency-injection oauth-2.0 fastapi
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.