Tengo una aplicación API rápida. Me gustaría configurar una autenticación HTTP básica como esta (sé que no es seguro, pero esto es para fines de prueba):
users = { "poisson": "rouge", "alice": "nevers", "bob": "dylan" } def user_login(credentials: HTTPBasicCredentials = Depends(security)): if not (credentials.username in users.keys() and users[credentials.username] == credentials.password): raise HTTPException( status_code = status.HTTP_401_UNAUTHORIZED, detail="Mauvais username ou mot de passe", headers={"WWW-Authenticate": "Basic"} ) return credentials.username @app.get("/somewhere") def my_func(credentials: HTTPBasicCredentials = Depends(user_login), n: int = 20): # do something return json Mi primera pregunta es, ¿cómo puedo "decir" que no almacene credenciales en cookies? Porque como estoy haciendo muchas pruebas, tan pronto como inicio sesión, incluso si uso el cierre de logout en fastapi swager, todavía tengo las credenciales (necesito eliminar las cookies de la configuración de Chrome).
Mi segunda pregunta es, ¿cómo puedo devolver también credentials.username en mi función my_func ya que estoy devolviendo un json con datos diferentes? ¿Debo insertar datos de credenciales en mi json?
No hay nada en su código que indique que se está utilizando una cookie. La interfaz de usuario de Swagger puede usar una cookie para almacenar la información de autenticación para evitar tener que volver a escribirla para cada solicitud, pero su propia API no parece usar cookies de ninguna manera.
Para las pruebas programáticas, sugiero usar TestClient en su lugar .
Al devolver los datos, tendrá que decidir qué tiene sentido, por ejemplo, puede devolver dos niveles de datos en un diccionario:
return {'username': credentials, 'func_result': json}