我的Flask Session行为异常。我正在使用与上一个项目相同的Flask Session设置,但是这次完全混乱了。
我登录,将值保存在session["user_type"]
中以跟踪帐户特权,然后在使用@admin_required
包装器转到另一页后,有时它会以正常方式运行,有时会重定向我返回登录页面,因为它无法读取该"user_type"
键。
我已经读到某处可能缺少"SECRET_KEY"
的情况,但是如您所见,我的代码中已经包含了它,所以不知道问题可能在哪里。
app = Flask(__name__)
app.config["SECRET_KEY"] = "abcdef"
# Session settings
app.config["SESSION_TYPE"] = "filesystem"
app.config["SESSION_FILE_DIR"] = "session"
app.config["SESSION_USE_SIGNER"] = True
app.config["SESSION_PERMANENT"] = True
app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(hours=16)
Session(app)
def admin_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if session.get("user_type") != "admin":
flash(Markup("<strong>Error: admin level required</strong>" +
"<br>If you have an admin account, please sign in."),
"danger")
return redirect("/sign-in")
return f(*args, **kwargs)
return decorated_function
@app.route("/admin/article/add")
@admin_required
def article_add():
return render_template("article_add.html")
@app.route("/admin/dashboard")
@admin_required
def dashboard():
return render_template("dashboard.html")
答案 0 :(得分:0)
尝试以下操作:session.permanent = True
这仅适用于您的永久会话寿命。