В настоящее время я изучаю Flask через книгу Мигеля Гринберга. Если вы знакомы вы знаете Flasky (Приложение, которое используют Miguel во время книги)Получение информации о пользователе через его опасный токен
Я сейчас в разделе 8, имея дело с Сброс пароля, то здесь исходный код (вы также можете найти его на репо. это тег 8g):
models.py
class User(UserMixin, db.Model):
__tablename__ = 'users'
...
def generate_reset_token(self, expiration=3600):
s = Serializer(current_app.config['SECRET_KEY'], expiration)
return s.dumps({'reset': self.id})
def reset_password(self, token, new_password):
s = Serializer(current_app.config['SECRET_KEY'])
try:
data = s.loads(token)
except:
return False
if data.get('reset') != self.id:
return False
self.password = new_password
db.session.add(self)
return True
авториз/views.py
@auth.route('/reset/<token>', methods=['GET', 'POST'])
def password_reset(token):
if not current_user.is_anonymous:
return redirect(url_for('main.index'))
form = PasswordResetForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user is None:
return redirect(url_for('main.index'))
if user.reset_password(token, form.password.data):
flash('Your password has been updated.')
return redirect(url_for('auth.login'))
else:
return redirect(url_for('main.index'))
return render_template('auth/reset_password.html', form=form)
авториз/forms.py
class PasswordResetForm(Form):
email = StringField('Email', validators=[Required(), Length(1, 64),
Email()])
password = PasswordField('New Password', validators=[
Required(), EqualTo('password2', message='Passwords must match')])
password2 = PasswordField('Confirm password', validators=[Required()])
submit = SubmitField('Reset Password')
def validate_email(self, field):
if User.query.filter_by(email=field.data).first() is None:
raise ValidationError('Unknown email address.')
Мой вопрос:
Я не хочу, чтобы спросить у пользователя его адрес электронной почты еще раз, так как они изменяют пароль через электронную почту, которую они получили , Есть ли способ получить сообщение пользователя или пользователя от этого токена?
Ну, теперь, когда вы упомянули об этом, это правда! Я не думал об этом –
Я изменил весь вопрос, знаете ли вы, как это можно сделать? –