flask login成功登录后,如何让用户回到即将到来的URL?

How to throw user back to the coming URL after successful login in flask login?

我正在创建一个 flask 登录系统。我的 URL“/profile”受到限制,因此无论何时任何用户想要访问“/profile"URL,他们都会被扔到登录页面。

但是在成功登录后用户被重定向到URL。

我希望用户在成功登录后应该被抛出到 "/profile" 而不是重定向 URL。

这是我的登录路径-

@app.route("/login", methods = ["GET" , "POST"])
def login():
    if request.method == 'POST':
        email = request.form.get('email')
        password = request.form.get('pass')
        keep_log  = request.form.get('keep_log')
        if keep_log == "on":
            remember_me = True
        else:
            remember_me = False
        user_account = Register_data.query.filter_by(email=email).first()
        if user_account:
            if check_password_hash(user_account.password,password):
                login_user(user_account,remember=remember_me)
                flash(f'WELCOME {user_account.name} ')
                return redirect(url_for('home'))
            else:
                flash(f'USERNAME OR PASSWORD IS INCORRECT')
                return redirect(url_for('login'))
        else:
            flash('This email is not registered yet!. Create A New Account To Continue.')
    return render_template("2login.html")

我要修改这个URL给来的用户URL-

return redirect(url_for('home')) 

请帮助我。

提前致谢

我想我明白你的问题了。你可能想要这个:

用户(未登录)进入“/profile”页面。由于用户还没有登录,他被重定向到“/login”。登录成功后,他被重定向到“/profile”页面。是吗?

所以在你的代码中:

from flask import redirect, request
from flask_login import current_user

@app.route("/profile")
def profile():
    if not current_user.is_authenticated():
        # ...
        return redirect(url_for("login", next_page="/profile")) # send an url arg to login page
    # ...

@app.route("/login")
def login():
    # ...
    login_user(user_account,remember=remember_me)
    flash(f'WELCOME {user_account.name} ')
    next_page = request.args.get("next_page") # get the url argument
    return redirect(next_page)
    #...

这是显式方式,实际上还有一种隐式方式:你只需要定义 next url 参数,它会自动重定向到那个 url.

希望这能解决您的问题。