Flask-Login | TypeError: object supporting the buffer API required.

0

Witam,

Próbuję stworzyć skrypt, dzięki któremu będzie można się zalogować używając bibliotek Flask i Flask-Login. Aplikacja dodaje dane użytkownika to bazy danych (sqlite) oraz hash'uje hasło (metodą sha256) jednak nie jest w stanie zalogować użytkownika za pomocą biblioteki Flask-Login.

Podczas próby logowania wyskakuje błąd:
"TypeError: object supporting the buffer API required"

Jedna linia błędu wskazuje na funkcję "check_password_hash".

Kawałek mojego kodu

A)Rejestracja:

@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)

b) Logowanie:

@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)

Czy spotkał się ktoś z Was z podobnym problemem?

Z góry dziękuję!

0

Jeżeli LoginForm ma tę samą strukturę, co RegisterForm, to tutaj:

if check_password_hash(user.password, form.password):

Przekazałeś do funkcji pole formularza, które jest jakimś tam obiektem, zamiast jego zawartości. Powinno być:

if check_password_hash(user.password, form.password.data):

1 użytkowników online, w tym zalogowanych: 0, gości: 1