Distributed session
怎么使用flask来做分布式session,以及为什么要使用分布式的session。
因为cookie不太适合存一些敏感信息,所以一般敏感的信息会存到session里。但是大部分时候都是cookie和session结合使用。session是存在服务器里面的相对安全一点。
储存原理:
通过cookie存一个session_id,然后具体的数据是保存到session里面,而session会存到server里面。比如在用户登录之后服务器会在cookie里面保存一个session_id,下次再发起请求的时候会把该session_id携带上来,服务器根据session_id在session的库中获取用户的session数据。
flask默认采用的方式是将session数据加密,然后存到cookie里面。但是也可以换成别的方式。
session
先来了解一下flask默认的session的使用方法。因为要使用session所以必须要设置SECRET_KEY
才能正常启动。
1 | """ |
在这里就不给大家截图了,大家可以自己输入这些代码尝试一下。
session的过期时间
如果没有设置session的有效时间,默认的就是关闭浏览器之后过期。如果设置session.permanent=True
,那session默认31天之后过期。如果不想31天后过期可以设置app.config['PERMANENT_SESSION_LIFETIME'] = 3600
来修改过期时间。
session的删除
session的储存方法类似字典。有三种删除的方法session.pop('key')
, del session['key']
, session.clear()
最后一个表示清除整个session的数据。
分布式的session
利用flask-session把session存到服务器里面。flask-session支持多种数据库:
- redis
- memcached
- filesystem
- MongoDB
- sqlalchmey
因为redis是把数据储存到内存上面的,速度相当快,所以一般用redis来储存session的。
首先把flask-seesion
,redis
安装一下:
1 | pip3 install flask-session |
然后在代码里面配置redis的信息就好:
1 | """ |
我们可以通过redis-cli
来查看相对应的session信息: