我正在尝试在 FASTAPI 中进行 OAuth 身份验证,并且我已经连接到我的数据库
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
我想比较输入的用户名是否与数据库中注册的用户名匹配
def get_user(nombre_usuario: str, db: Session = Depends(get_db)):
try:
usuario_db = db.query(models.Usuarios).filter(models.Usuarios.nombre_usuario == nombre_usuario).first()
if not usuario_db:
raise HTTPException(status_code=404, detail="Usuario no encontrado")
return usuario_db
except SQLAlchemyError as e:
return {"error": "Error al consultar en la base de datos"}
def authenticate_user(username: str, password: str):
user = get_user(username)
if not user:
return False
if not verify_password(password, user.password):
return False
return user
如果我把它放在路线中,这会完美地工作
但是如果我想使用 defauthenticate_user 调用 getuser 函数,我不确定是否包含 getdb 函数...
我已经尝试过改变这条线;但 id 不起作用 用户 = get_user(用户名, 取决于(get_db))
您在错误的地方使用了depends
def get_user(nombre_usuario: str, db: Session):
try:
usuario_db = db.query(models.Usuarios).filter(models.Usuarios.nombre_usuario == nombre_usuario).first()
if not usuario_db:
raise HTTPException(status_code=404, detail="Usuario no encontrado")
return usuario_db
except SQLAlchemyError as e:
return {"error": "Error al consultar en la base de datos"}
@app.post("/auth")
def authenticate_user(username: str, password: str, db: Session = Depends(get_db)):
user = get_user(username, db)
if not user:
return False
if not verify_password(password, user.password):
return False
return user