Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1K
Views
¿Cómo usar el token de actualización con fastapi?

Estoy tratando de encontrar un ejemplo del uso del token de actualización en fastapi. Los documentos de fastapi proporcionan un ejemplo de cómo crear un token de portador con una vida útil limitada, pero no cómo actualizar el token.

Para el matraz hay un matraz-jwt-extendido pero no encontré algo similar para fastapi.

¡Cualquier sugerencia será apreciada gracias!

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Es posible que desee consultar fastapi-jwt-auth . Está inspirado en el matraz-jwt-extendido. Hay una buena documentación sobre cómo usar el token de actualización con buenos ejemplos .

Primero debe instalar el paquete: pip install fastapi-jwt-auth . Y configurar el secreto. Luego, al iniciar sesión, cree un token de actualización y un token de acceso y devuélvalo al usuario.

 from fastapi import FastAPI, Depends, HTTPException from fastapi_jwt_auth import AuthJWT from pydantic import BaseModel app = FastAPI() class User(BaseModel): email: str password: str class Settings(BaseModel): authjwt_secret_key: str = "secret" @AuthJWT.load_config def get_config(): return Settings() @app.post('/login') def login(user: User, Authorize: AuthJWT = Depends()): if user.email != "test@test.com" or user.password != "test": raise HTTPException(status_code=401,detail="Incorrect email or password") access_token = Authorize.create_access_token(subject=user.email) refresh_token = Authorize.create_refresh_token(subject=user.email) return {"access_token": access_token, "refresh_token": refresh_token}

En el siguiente paso, debe crear un punto final para actualizar el token de acceso.

 @app.post('/refresh') def refresh(Authorize: AuthJWT = Depends()): Authorize.jwt_refresh_token_required() current_user = Authorize.get_jwt_subject() new_access_token = Authorize.create_access_token(subject=current_user) return {"access_token": new_access_token} # Example protected Endpoint @app.get('/hello') def refresh(Authorize: AuthJWT = Depends()): Authorize.jwt_required() return {"hello": "world"}

Tenga en cuenta que este es solo un pequeño ejemplo desde una perspectiva de seguridad, debe intercambiar los tokens de actualización al actualizar y colocar en la lista negra el token anterior. La biblioteca ofrece, por lo tanto, el decorador @AuthJWT.token_in_denylist_loader . Podría implementar la lista negra con una base de datos en memoria que mantenga los tokens invalidados hasta que se alcance la fecha de vencimiento. También en producción elige un verdadero secreto.

over 4 years ago · Santiago Trujillo Report

0

Generé mi propio token, de acuerdo con el intervalo de tiempo entre esta solicitud y la última solicitud para determinar si actualizo el token, si el tiempo excede el tiempo programado para reemplazar el token, mientras notifico al front-end que guarde el nuevo token.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!