Ожидаемый хеш 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(). Итак, вам нужно изменить столбец пароля и увеличить размер поля пароля.