flask 设置session过期时间

2015-11-06
import os
from datetime import timedelta
from flask import Flask, session, render_template

app = Flask(__name__)

app.secret_key = os.urandom(24)

app.permanent_session_lifetime = timedelta(seconds=10)


@app.route('/')
def index():
    session.permanent = True
    try:
        session['counter'] += 1
    except KeyError:
        session['counter'] = 1
    return "Number of reloads on the current session: %d" % session['counter']

if __name__ == '__main__':
    app.run(debug=True)

参数详解

permanent_session_lifetime - session过期时间

  • 文档
  • 默认31天
  • flask.Flask的属性,所以flask.Flask.permanent_session_lifetime = timedelta(seconds=15)来赋值
  • 也可在config.py里赋值PERMANENT_SESSION_LIFETIME = 15

permanent

  • 文档
  • 默认为False,意思是关掉浏览器就删除session,不管permanent_session_lifetime是否到达
  • 若设置为True,关掉浏览器,如果permanent_session_lifetime未到,则再次打开浏览器,session也会存在,如登陆状态也在
  • flask.session的属性,session.permanent = True来定义

例子解析

  • 因为session.permanent = True,不管是否关闭浏览器,在浏览器没有活动超过10s,session就被删除
  • 如果session.permanent = Flase即默认,有两种情况session会被删除,一种是关闭了浏览器,第二种是未关闭浏览器,但是未活动时间超过10s

Til next time,

maijver at 09:11