返回顶部

flask-session应用

flask-session简介

flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,比如:

redis/memcached/file/Mongodb/SQLAlchemy

安装:

pip3 install flask-session

简单使用:

应用:
a. 配置
       app.config['SESSION_TYPE'] = 'redis'
       app.config['SESSION_REDIS'] = Redis(host='127.0.0.1',port='6379')
                
b. 替换 
       from flask_session import Session
   # app.run()之前配置 Session(app)
或者在配置文件中配置:
from redis import Redis
from datetime import timedelta

class BaseConfig(object):
SESSION_TYPE = 'redis' # session类型为redis
SESSION_REDIS = Redis(host='127.0.0.1', port=6379)
SECRET_KEY = '6666661'
SESSION_KEY_PREFIX = 'session:' # 保存到session中的值的前缀
SESSION_PERMANENT = True # 如果设置为False,则关闭浏览器session就失效。
PERMANENT_SESSION_LIFETIME = timedelta(minutes=10)
SESSION_USE_SIGNER = False # 是否对发送到浏览器上 session:cookie值进行加密
 

特别注意:session中存储的是字典,修改字典内部元素时,会造成数据不更新。 

有两种方法解决:

第一种:


# 修改了session中的数据后,添加下面这一句:
session.modified = True

第二种:

# 配置文件中配置:
SESSION_REFRESH_EACH_REQUEST = True
# session.permanent = True (flask-session中默认就为true)
就是设置session为永久有效,否则默认浏览器关闭后,该session就会失效,一般配合PERMANENT_SESSION_LIFETIM 设置有效实现.
SESSION_PERMANENT=True后session的过期时间就会自动刷新,也就是说每次成功请求后过期时间都会重新计算,不会出现你设置了半小时的过期时间,连续操作半小时后提示你登陆失效

#比如可以这样配置:
DEBUG = True
SECRET_KEY = '666666'
PERMANENT_SESSION_LIFETIME = timedelta(minutes=30)
SESSION_REFRESH_EACH_REQUEST = True
SESSION_TYPE = 'redis'
SESSION_REDIS = Redis(host='127.0.0.1', port=6379)

 

posted @ 2020-10-02 17:41  muguangrui  阅读(254)  评论(0)    收藏  举报