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

Odpowiedz Nowy wątek
2018-12-30 19:50
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ę!

Pozostało 580 znaków

2018-12-30 20:09
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):

Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)
edytowany 1x, ostatnio: superdurszlak, 2018-12-30 20:09

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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