可以为Python Flask中的不同用户创建不同的会话超时长度吗?

时间:2017-04-05 20:32:56

标签: python session flask

我有一个Angular / Flask网络应用,我正在尝试创建一个管理页面,该网页将由某个网址访问,例如" / admin_page"。该页面将需要其他身份验证,并且 需要发出比所有其他用户 的超时短的会话超时。

但是,我的印象是所有会话都是从我的烧瓶应用程序中的相同变量生成的,我将其配置为:

app.permanent_session_lifetime = timedelta(seconds=int)

所以,我的问题是:有没有办法改变某些用户的会话超时时长而不影响其他用户的超时时长。会议?

即。 如果在/admin_page的路由处理程序中,我暂时更改app.permanent_session_lifetime的值,创建用户的会话,然后将变量恢复为原始值,之前创建的会话是否具有超时值改变了吗?

2 个答案:

答案 0 :(得分:0)

当然可以!

1)如果它是你想要的基于网址的终身会话:

为每个视图添加配置行:

app.permanent_session_lifetime = timedelta(seconds=int)

app.config['PERMANENT_SESSION_LIFETIME'] = <intended_value_in_seconds>

2)如果是基于每个用户:

我建议创建组,并为每个组分配一个特定的配置,以便您可以在需要时调用配置。

def group_session(self, group):
    if group_session == 'visitors':
       return app.config['PERMANENT_SESSION_LIFETIME'] == <intended_value_in_seconds>
    if group_session == 'admin':
        return app.config['PERMANENT_SESSION_LIFETIME'] == <intended_value_in_seconds>
    return app.config['PERMANENT_SESSION_LIFETIME']

3)如果您希望有一个用户会话生命周期,那么:

if user == <chosen_name>:
    app.config['PERMANENT_SESSION_LIFETIME'] == <intended_value_in_seconds>

我希望这有帮助!

答案 1 :(得分:0)

子类SecureCookieSessionInterface覆盖 get_expiration_time()方法,其中yo可以为单个会话设置会话过期时间。