Me gustaría administrar un sistema de autorización personalizado en mi aplicación FastAPI.
Para lograr esto, me gustaría usar dependencias de operaciones de ruta de grupo en las rutas correspondientes para garantizar que el token de autenticación esté presente y sea válido. Seguí esta guía en la documentación que funciona bien.
Pero dado que mi lógica comercial es más complicada, también me gustaría poder usar el token API en mis controladores para realizar reglas adicionales.
El tip en esta sección establece que Note that, much like dependencies in path operation decorators, no value will be passed to your path operation function.
Lo que significa que, si el token de autenticación se define como una dependencia para un grupo de operaciones de ruta, no hay forma de recuperar su valor en los controladores.
¿Significa que necesariamente tengo que usar dependencias individuales en cada función de operación de ruta agregándolas como parámetro, o hay otra forma de hacerlo de una manera más SECA? Sé que puedo recuperar el encabezado dentro de request.headers , pero ¿es así como se supone que debe hacerse?
Una forma se vería así:
router = APIRouter() @router.get('/test') async def test(request: Request, token: str = Depends(check_token)): token # directly availableMientras que el otro es:
router = APIRouter(dependencies=[Depends(check_token)]) @router.get('/test') async def test(request: Request): token = request.headers['auth'] # need some work around to retrieve token ...