如何在flask登录成功后将用户扔回即将到来的URL ?



我正在创建一个flask登录系统。我的网址"/档案"是受限制的,所以当任何用户想要访问"/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')) 

请帮帮我。

Thanks in advance

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

用户(未登录)进入"/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)
#...

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

希望这能解决你的问题。

最新更新