2016-12-22 162 views
0

试图调整我的用户登录系统。使用默认的烧瓶会话。我有一个需要登录的区域(所有页面在/仪表板/ - 但用户也可以在网站上登录)。我希望能够在说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

回答

0

“如果我点击左右,它立即踢我”。如果您按一下周围,你的会话到期时间将被设置为30分钟,这是因为:

@app.before_request 
def make_session_permanent(): 

@app.before_request是应用广泛。

您可以使用Blueprint这prefix_url是 '/仪表盘' 和使用

@blueprint.before_request 

代替。 然后,只有在此蓝图下的请求才能更新到期时间。

+0

嗨pleae检查我的编辑,如果你可以,仍然有问题。如果session.timeout(),flash('你已经被注销为不活动状态'),那么我需要一个if语句,当然,在2分钟的测试期后,我可以正确地超时。 –

+0

嗨,没有必要添加''app.route(“/ dashboard /”)或''dashboard.before_request''来装饰def dashboard():'';只需: ''' @ dashboard.route(“/ dashboard /”) @login_required def dashboard(): '''' 就够了。 – bingtel

+0

是的,我从该函数中删除了'@ dashboard.before_request',但我必须拥有@ app.route(“/ dashboard /”),否则我得到的404页面不存在。叹。在这上面工作几个小时,要求包括Git问题在内的任何地方都没有人能提供答案。我基本上坚持session = INFINITY MINUTES。继承人所有与此相关的所有代码https://dpaste.de/mJwM –