我正在尝试构建一个超级简单的网络应用程序供我自己使用。我将是唯一的用户,所以我觉得不需要涉及数据库来进行用户管理。我正在尝试使用烧瓶登录,但即使我的调用login_user
成功,在重定向到带有@login_required
. 这是我的应用程序的全部内容:
from flask import Flask, render_template, request, flash, redirect, url_for
from flask.ext.login import LoginManager, login_user, logout_user, current_user, login_required, UserMixin
app = Flask(__name__, static_url_path="")
app.secret_key = "[redacted]"
login_manager = LoginManager()
login_manager.init_app(app)
#login_manager.login_view = "login"
class User(UserMixin):
def __init__(self, id):
self.id = id
nathan = User('nathan')
@login_manager.user_loader
def load_user(userid):
if userid == 'nathan':
return nathan
else:
return None
@app.route("/logout")
@login_required
def logout():
logout_user()
return redirect(url_for('login'))
@app.route('/')
@login_required
def index():
return render_template('index.html')
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == 'POST':
if request.form['username'] == 'nathan'\
and request.form['password'] == '[redacted]':
login_user(nathan, remember=True)
flash('logged in...', 'success')
return redirect(request.args.get("next") or url_for("index"))
else:
flash('Incorrect username or password. Try again.', 'error')
return render_template("login.html");
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
我已经验证登录实际上成功(login_user
返回 true)并且load_user
正在返回nathan
对象。
[编辑] 另外,我目前正在使用 Flask 开发服务器,以防万一。
不知道我哪里错了。提前致谢!