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.
希望这能解决您的问题。
我正在创建一个 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.
希望这能解决您的问题。