Ожидаемый хеш sha256_crypt, вместо этого получил конфигурационную строку sha256_crypt

Я получаю следующую ошибку, ожидаемую sha256_crypt хеш, вместо этого получил конфигурационную строку sha256_crypt.

ожидаемый хеш sha256_crypt, вместо этого получил конфигурационную строку sha256_crypt

Это мой код, что я делаю не так?

код:

@app.route('/login' , methods=['GET' ,'POST'])
def login():
    if request.method == 'POST':

        #Get form fields
        username = request.form['username']
        password_candidate = request.form['password']


        #Create cursor
        cur = mysql.connection.cursor()

        #Get user by username
        result = cur.execute("SELECT * FROM users WHERE username = (%s)", [username])
        app.logger.info(result)

        if result > 0:
            #Get stored hash
            data = cur.fetchone()
            password = data['password']
            app.logger.info(password)

            #Comparing the passwords
            if sha256_crypt.verify(password_candidate, password):
                app.logger.info('PASSWORD MATCHED')
                app.logger.info(password_candidate)
                #Passed
                sesion['logged_in'] = True
                session['username'] = username
                flash('You are now logged in', 'succes')
                return redirect(url_for('about'))

            else:
                error = "Invalid login"
                return render_template('login.html', error=error)
            #Close connection
            cur.close()
        else:
            error = 'Username not found'    
            return render_template('login.html', error=error)

0 ответов

Настоящая проблема здесь в настройке таблицы базы данных. Sha256 имеет длину 256. Возможно, вы используете менее 256 для поля пароля. Таким образом, некоторые данные хэша пароля теряются при вставке в базу данных. Это вызывает ошибку при выполнении функции sha256_crypt.verify(). Итак, вам нужно изменить столбец пароля и увеличить размер поля пароля.

Другие вопросы по тегам