“Depends”对象没有属性“query”

问题描述 投票:0回答:1

我正在尝试在 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))

python authentication oauth fastapi
1个回答
0
投票

您在错误的地方使用了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
© www.soinside.com 2019 - 2024. All rights reserved.