登录重定向问题上的Flask

时间:2016-06-19 14:23:24

标签: python redirect flask token

我在注册确认电子邮件后向用户发送确认令牌。我遇到的问题是我无法进入确认方法,因为它需要用户登录,一旦他们转到登录方法,我就无法确定如何将它们引导回确认方法。

请注意,代码很大程度上基于(非常好的)书籍Flask Web Development'作者:Grinberg 2014。

我们从新用户注册开始:

@auth.route('/signup', methods=['GET', 'POST'])
def signup():
        #validate form and create user
        ...
        token = user.generate_confirmation_token()
        send_email(user.email, 'Please Confirm Email Address',
               'email/confirm', user=user, token=token)
        return redirect(url_for('auth.login'))
    return render_template('auth/register.html', form=form)

新用户发送并发送电子邮件,当用户点击电子邮件中的链接时,他们会被发送到此路线:

@auth.route('/confirm/<token>')
@login_required
def confirm(token):
    if current_user.confirmed:
        return redirect(url_for('main.index'))
    if current_user.confirm(token):
        #do something here
    else:
        #message
    return redirect(url_for('main.index'))

由于需要登录才能到达确认终点,因此首先会将用户定向到此处:

@auth.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user is not None and user.verify_password(form.password.data):
            login_user(user)
            return redirect(request.args.get('next') or url_for('main.index'))
    return render_template('auth/login.html', form=form)

我遇到的问题是,在用户登录后,他们没有重定向到确认路由,我无法确定如何重定向以确认用户刚登录的情况,以便他们可以回复注册电子邮件链接。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我也从这本书中学习。虽然我不知道你有什么问题,但我可以向你展示一些关键信息来解决你的问题。

因此,如果您的网址存在问题,请检查您的网址。 另外,我建议你在pycharm中调试你的代码,因为你可以设置断点和跟踪变量&#39;变化。祝你好运。