我确信我写的creditinals是真的,在控制台上,它会将我重定向到仪表板,但之后它会将我重定向到登录页面。为了解决这个问题,我试着清除cookie,但是没有修复。毕竟,我试图在登录后打印用户,结果返回AnonymousUserMixin,所以我认为问题出在flask-login或sqlalchemy上
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True)
password = db.Column(db.String(64), unique=False)
def __init__(self, username, password, tFAt):
self.username = username
self.password = password
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return str(self.id)
@login_manager.user_loader
def load_user(username):
return User.query.filter_by(username = username).first()
@login_manager.unauthorized_handler
def unauthorized():
return redirect(url_for("login"))
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "POST":
username = request.form.get("username")
password = request.form.get("password")
c_user = User.query.filter_by(username=username, password=password).first()
if c_user is None:
return redirect(url_for("login"))
login_user(c_user)
return redirect(url_for("dashboard"))
else:
return render_template("login.html")
@app.route("/dashboard")
@login_required
def dashboard():
return render_template("dashboard.html")
if __name__ == "__main__":
app.secret_key = "ABCD"
app.run("0.0.0.0", 5555, debug=True)发布于 2017-12-19 22:31:55
我刚刚通过改变这个来修复它
def load_user(username):
return User.query.filter_by(username = username).first()至
def load_user(id):
return User.query.filter_by(id = id).first()因为在原始代码中返回
def get_id(self):
return str(self.id)它必须与您返回的内容相同,For more information
https://stackoverflow.com/questions/47888579
复制相似问题