总有各种高大上的用法,但是实际写起来就是那么两三行,直接上demo:
from datetime import timedelta
from flask import Flask,session
app = Flask(__name__)
# 设置session的密码
# 可以这样设置,但是有更好看的方法
# app.config['SECRET_KEY'] = 'abc123'
app.secret_key = 'abc123'
# 设置过期时间,类型是timedelta,写数字不报错、但是不生效,注意!!!
app.permanent_session_lifetime = timedelta(hours=1)
# 颁发session
@app.route('/')
def set():
# 类似字典
session['username'] = 'star'
# session.permanent = True
return 'hahaha!'
# 验证session是否有效
@app.route('/test')
def test():
username = session.get('username',None)
if username == 'star':
return 'success'
return 'error'
if __name__ == '__main__':
app.run(debug=True)
要说明的是:
permanent是“永久”的意思,
如果设置了此项为True,
意味着在permanent_session_lifetime过期时间内即使关闭浏览器,再次打开时session还有效
如果设置了此项为False,
即使在session的有效期内关闭浏览器,也会清空session,从而导致登录失效
还有就是,session.permanent只能在视图内设置,不能和过期时间一起设置