나는 유사한 질문이 here라고 묻는 것을 안다. 그러나 어떤 대답도 내 문제를 해결하지 못하는 것 같다. 나는 Python3, Flask 및 flask-bcrypt를 사용하고 있습니다.flask-bcrypt 잘못된 소금; 인코딩 문제?
로그인 기능이 이전에 잘 작동하고 있었고 무엇이 변경 되었기 때문에 어떤 일이 일어 났는지 확실하지 않습니다.
password = form.password.data.encode('utf-8')
hashed_password = bcrypt.generate_password_hash(password).decode('utf-8')
을 그런 다음 로그인 할 때, 우리는 데이터베이스에 전달하기 전에 다음과 같이 내가이 가입, 우리가 UTF-8로 수신 된 비밀번호를 인코딩하기위한 것입니다 이해하는 방법은 다음 해시 된 암호를 해독
password = form.password.data.encode('utf-8')
if bcrypt.check_password_hash(user.password, password):
하지만 난이에서 오류 잘못된 소금을 얻을 : 우리는 후보 암호를 인코딩하고 다음과 같이 데이터베이스에 해시 된 암호가 비교로되어있다. 그리고 저는 성공한 몇 가지 다른 변종을 시도했습니다.
도움을 주시면 감사하겠습니다. 다음은보기입니다. 필요한 다른 코드를 제공 할 수 있습니다.
@app.route('/<role>/signup/', methods=['GET', 'POST'])
def signUp(role):
form = RegisterForm()
if form.validate_on_submit():
password = form.password.data.encode('utf-8')
hashed_password = bcrypt.generate_password_hash(password).decode('utf-8')
new_user = User(role=role, password=hashed_password, visits=1)
form.populate_obj(new_user)
db.session.add(new_user)
db.session.commit()
login_user(new_user)
return redirect(url_for('createContactInfo', user_id=current_user.id))
return render_template('signup.html', form=form, role=role)
@app.route('/login/', methods=['GET', 'POST'])
def logIn():
form = LoginForm()
if form.validate_on_submit():
password = form.password.data.encode('utf-8')
user = User.query.filter_by(email=form.email.data).first()
if user:
if bcrypt.check_password_hash(user.password, password):
login_user(user, remember=form.remember.data)
User.query.filter_by(id=current_user.id).update({'visits': User.visits + 1})
db.session.commit()
if current_user.role == 'admin':
return redirect(url_for('adminMainPage', user_id=current_user.id))
elif current_user.role == 'guest':
return redirect(url_for('guestMainPage', user_id=current_user.id))
else:
return "wrong role!"
flash('Invalid login')
return render_template('login.html', form=form)
flash('Invalid login')
return render_template('login.html', form=form)
return render_template('login.html', form=form)