烧瓶会话行为异常

时间:2019-10-17 09:56:31

标签: python session flask

我的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")

1 个答案:

答案 0 :(得分:0)

尝试以下操作:session.permanent = True 这仅适用于您的永久会话寿命。