Flask-Login |TypeError: требуется объект, поддерживающий буферный API - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь создать страницу входа и регистрации с помощью модуля Flask-Login.Приложение может добавить сведения о пользователе в базу данных (sqlite) и хэшировать пароль, но не может правильно войти в систему пользователя.

Ошибка применения: «TypeError: требуется объект, поддерживающий API-интерфейс буфера»

Указанная ошибка, похоже, связана с методом "check_password_hash" в моем коде.

Пожалуйста, найдите часть моего кода:

a) Регистрация

@app.route('/register', methods=['POST', 'GET'])
def register():
    form = RegisterForm()

    if form.validate_on_submit():
        hashed_password = generate_password_hash(form.password.data, method='sha256')
        new_user = User(username=form.username.data, password=hashed_password, email=form.email.data)
        db.create_all()
        db.session.add(new_user)
        db.session.commit()
        return render_template('register_ok.html', form=form)
    return render_template('register.html', form=form)

б) Логин (который не работает)

@app.route('/login', methods=['POST', 'GET'])
def login():
    form = LoginForm()

    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()
        if user:
            if check_password_hash(user.password, form.password):
                login_user(user, remember=form.remember.data)
                return redirect(url_for('dashboard'))
            return render_template('err_login.html')
    return render_template('login.html', form=form)

Не могли бы вы посоветовать возможное исправление?

Заранее спасибо!

1 Ответ

0 голосов
/ 02 января 2019

Ошибка связана с модулем werkzeug.security вместо flask_login.Я уже исправил это, добавив user_loader:

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(user_id)

Cheers!

...