【问题标题】:how to add session timeout but keep session alive with user activity in flask?如何添加会话超时但保持会话活动与烧瓶中的用户活动?
【发布时间】:2017-05-07 19:12:20
【问题描述】:

尝试稍微调整一下我的用户登录系统。使用默认烧瓶会话。我有一个需要登录的区域(/dashboard/ 下的所有页面 - 但用户也可以在站点范围内登录)。我希望能够在 30 分钟后结束用户会话,并且在会话结束时,闪烁一条消息“您已因不活动而注销”。但是如果用户在该时间段结束之前点击,保持会话活动直到 30 分钟过去。我对此有一些奇怪的行为,即如果我点击周围,它会立即踢我。肯定有问题。我从这里提出了两个问题 - 试图结合这两个功能:

Is there an easy way to make sessions timeout in flask?

@app.before_request
def make_session_permanent():
    session.modified = True        
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=2)
    #flash("You have been logged out for inactivity.")

编辑:登录行为正常,但时间限制仍然无效,会话永远保持。怀疑用户活动是否使会话保持活动状态。这是我的登录注册系统、蓝图、仪表板等的完整代码。我看不出有什么问题。无论我尝试什么,我的会话仍然持续到无限期。 https://dpaste.de/vonL

【问题讨论】:

    标签: python session flask


    【解决方案1】:

    “如果我点击周围,它会立即踢我”。如果您点击左右,您的会话过期时间将设置为 30 分钟,因为:

    @app.before_request
    def make_session_permanent():
    

    @app.before_request 是应用程序范围内的。

    你可以使用一个Blueprint,它的prefix_url是'/dashboard'并使用

    @blueprint.before_request
    

    相反。 那么只有这个蓝图下的请求才能更新过期时间。

    【讨论】:

    • 嗨,如果可以的话,请检查我的编辑,仍然有问题。还需要一个 if 语句,大意是 if session.timeout(), flash('youve been logged out for inactivity') ,当然,在 2 分钟测试期之后,我可以让会话正确超时。
    • 你好,不用加@app.route("/dashboard/")@dashboard.before_request装饰def dashboard():;只需:``` @dashboard.route("/dashboard/") @login_required def dashboard(): ``` 就足够了。
    • 是的,我从函数中删除了 '@dashboard.before_request',但我必须有 @app.route("/dashboard/") 否则我得到的 404 页面不存在。叹。在这个问题上工作了几个小时,到处询问,包括烧瓶 git 问题,没有人能提供答案。我基本上坚持 session = INFINITY MINUTES。这是与此dpaste.de/mJwM 相关的所有内容的完整代码
    • dpaste.de/vonL 当前工作代码(会话仍然永远持续)
    • 取消def dashboard():上的@app.route("/dashboard/"),把app.register_blueprint(dashboard, url_prefix="/dashboard/")放在def dashboard():后面,就不会出现404错误了。
    猜你喜欢
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多