Python 成功登录返回路由:/NONE
此flask应用程序正确地提示输入用户名和密码-但根据日志文件,尽管存在此问题,仍返回路由/无,会话似乎有效,并且可以访问其他@login_所需的路由。任何关于正在发生的事情的想法都将不胜感激 登录模板:Login.htmlPython 成功登录返回路由:/NONE,python,flask,login,Python,Flask,Login,此flask应用程序正确地提示输入用户名和密码-但根据日志文件,尽管存在此问题,仍返回路由/无,会话似乎有效,并且可以访问其他@login_所需的路由。任何关于正在发生的事情的想法都将不胜感激 登录模板:Login.html {% extends "bootstrap/base.html" %} {% block content %} <div class="container"> <div class="row"> <form class="form-si
{% extends "bootstrap/base.html" %}
{% block content %}
<div class="container">
<div class="row">
<form class="form-signin" action="/logmein" method="POST">
<h2 class="form-signin-heading"> PCBevo Login</h2>
<div class="col-2">
<label for="username" class="sr-only">Username</label>
<input type="text" id="username" class="form-control" placeholder="username" name="username" required autofocus>
</div>
<div class="col-3">
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="inputPassword" class="form-control" placeholder="password" name="password" required>
</div>
<div class="col-4">
<button class="btn btn-lg btn-primary btn-block" type="submit" value="Submit">Sign in</button>
</div>
</form>
</div>
</div> <!-- /container -->
{% endblock %}
登录管理器和问题路由的应用程序设置的选定属性:
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
@app.route('/login')
def login():
session['next'] = request.args.get('next')
return render_template('login.html')
@app.route('/logmein', methods=['POST'])
def logmein():
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username).first()
if not user:
return '<h1>User not found!</h1>'
stored_password = user.password
if check_password_hash(stored_password, password):
login_user(user)
try:
return redirect(session['next'])
except KeyError:
return '<h1>You are now logged in!</h1>'
else:
return '<h1>Wrong password!</h1>'
login\u manager=LoginManager()
登录管理器。初始化应用程序(应用程序)
login\u manager.login\u视图='login'
@登录\u manager.user\u加载程序
def加载用户(用户id):
返回User.query.get(int(User\u id))
@app.route(“/login”)
def login():
会话['next']=request.args.get('next')
返回呈现模板('login.html')
@app.route('/logmein',methods=['POST'])
def logmein():
用户名=请求。表单['username']
密码=请求。表单['password']
user=user.query.filter\u by(username=username).first()
如果不是用户:
返回“未找到用户!”
存储的\u密码=user.password
如果检查\u密码\u散列(存储的\u密码,密码):
登录用户(用户)
尝试:
返回重定向(会话['next'])
除KeyError外:
return“您现在已登录!”
其他:
返回“错误的密码!”
在返回重定向(会话['next'])之前检查会话['next']
如果您将运行/login
而不是/login?next=some\u url
因为request.args.get('next')
将返回默认值None
但您可以使用自己的默认值,即主页“/”
在返回重定向(会话['next'])
之前,选中会话['next']。它可以是空的。特别是如果您将运行/login
而不是/login?next=some_url
@furas,则此提示启用了我正在寻找的乐趣。非常感谢。把这个作为答案,我会记下来
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
@app.route('/login')
def login():
session['next'] = request.args.get('next')
return render_template('login.html')
@app.route('/logmein', methods=['POST'])
def logmein():
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username).first()
if not user:
return '<h1>User not found!</h1>'
stored_password = user.password
if check_password_hash(stored_password, password):
login_user(user)
try:
return redirect(session['next'])
except KeyError:
return '<h1>You are now logged in!</h1>'
else:
return '<h1>Wrong password!</h1>'
request.args.get('next', "/" )