- Пользователь нажимает кнопку сброса
- Пользователя просят написать адрес электронной почты, который будет использоваться для сброса пароля.
- Письмо, пришедшее на их почтовый ящик, позволяет перейти по ссылке в формате http://127.0.0.1:5000/reset/eyJ1c2VybmFtZSI6ImN. Токен относится к точному адресу электронной почты.
- И когда они нажимают ссылку, они перенаправляются на страницу сброса, где они дважды вводят новый пароль, прежде чем нажать «Отправить».
Проблема в том, что код не продолжается на if заявление об обновлении базы данных. Он просто обходит его и сразу возвращает render_template('reset.html')
@application.route('/reset/', methods=['GET', 'POST'])
def reset(token):
try:
print(f"Received token: {token}")
print(f"Token type: {type(token)}")
try:
user_data = s.loads(token, salt='password-reset', max_age=600)
print(f"Decoded data type: {type(user_data)}")
print(f"Decoded data: {user_data}")
if not isinstance(user_data, dict) or 'username' not in user_data:
raise ValueError("Decoded data is not a valid dictionary or missing 'username' key.")
username = user_data['username']
print(username)
except Exception as e:
print(f"Error decoding token: {e}")
flash("The reset link is invalid or has expired.")
return redirect(url_for('forget'))
if request.method == 'POST':
password = request.form['pass']
confirm_password = request.form['pass2']
if password != confirm_password:
print('Both passwords have to be the same')
else:
conn = connect_db()
cursor = conn.cursor()
cursor.execute(f'UPDATE {USERS_TABLE} SET pass = %s WHERE username = %s', (password, username))
conn.commit()
cursor.close()
conn.close()
print("Your password has been reset successfully.")
return redirect(url_for('login'))
except Exception as e:
print(f"Unexpected error: {e}")
flash("An error occurred. Please try again.")
return redirect(url_for('forget'))
return render_template('reset.html')
reset.html
Password reset
To reset your password , please fill in the text fields with your new password .{{msg}}
new password
repeat new password
Submit
Подробнее здесь: https://stackoverflow.com/questions/792 ... ail-server
Мобильная версия