Saltar a contenido

Bearer Token

En el apartado de middlewares se explicaba que estos intervienen en acciones que permiten interceptar y/o modificar el flujo de datos.

En esta entrada, nos enfocaremos en la validación de cabeceras utilizando la función validate_auth_session.

Disponible en el módulo app.common.middlewares.auth

validate_auth_session es una función utilizada como Inyección de Dependencias, para realizar las siguientes operaciones:

Definición

  • validar la cabecera Content-Type y su estructura, ejemplo:

    Content-Type: application/json.

  • validar la cabecera Authorization y su estructura, ejemplo:

    Authorization: Bearer awesome_32_characters_token.

  • validar la cabecera Accept-Encoding y su estructura, ejemplo:

    Accept-Encoding: gzip,deflate.

  • valida la estructura del BEARER_TOKEN.

  • extrae el BEARER_TOKEN y realiza una consulta según la base de datos definida, para validar el token de sesión y almacenar la información de la sesión obtenida, al objeto request.state.

Para tener en cuenta

  • Al utilizar validate_auth_session en un route, hará obligatorias las cabeceras anteriormente mencionadas.

veamos un ejemplo:

1
2
3
4
5
6
7
8
# app/modules/customers/urls.py

from fastapi import Depends
from app.common.middlewares.auth import validate_auth_session

...

add_router(customers_router, "/customers", tags=["customers"], dependencies=[Depends(validate_auth_session)])

Lo anterior se ubica en el archivo urls.py de cada módulo, en la ruta app/modules/.

ejemplo:

├── app/
│   ├── modules/
│   │   ├── customers/
│   │   │   ├── dto/
│   │   │   ├── helpers/
│   │   │   ├── models/
│   │   │   ├── schemas/
│   │   │   ├── views/
│   │   │   ├── __init__.py
│   │   │   └── urls.py        <-- this file

Nota

El comando crud 🕹, agrega la dependencia de validate_auth_session de forma automática, al módulo creado.

Lectura recomendada