Flask—Session

一、安装Flask-Session

pycharm中安装 Flask-Session
terminal安装  pip3 install flask-session 

二、Flask-Session介绍

1. Flask-Session

        flask_session是flask框架实现session功能的插件,用来代替flask自带的session机制。

2. 配置参数

(1)SESSION_COOKIE_NAME

        设置返回给客户端的cookie的名称,默认是“session”;放置在response的头部。

(2)SESSION_COOKIE_DOMAIN

        设置会话的域,默认是当前的服务器,因为Session是一个全局的变量,可能应用在多个app中

(3)SESSION_COOKIE_PATH

        设置会话的路径,即哪些路由下应该设置cookie,如果不设置,那么默认为‘/’,所有的路由都 会设置cookie

(4)SESSION_COOKIE_HTTPONLY

        cookie应该和httponly标志一起设置,默认为True,这个一般采用默认

(5)SESSION_COOKIE_SECURE

        cookie是否和安全标志一起设置,默认为false,这个一般采用默认

(6)PERMANENT_SESSION_LIFETIME

        设置session的有效期,即cookie的失效时间,单位是s.这个参数很重要,因为默认会话是永久 性的

(7)SESSION_TYPE

# 设置session保存的位置,可以有多种配置,
SESSION_TYPE = ‘null’          : 采用flask默认的保存在cookie中;
SESSION_TYPE = ‘redis’         : 保存在redis中
SESSION_TYPE = ‘memcached’     : 保存在memcache
SESSION_TYPE = 'filesystem'    : 保存在文件
SESSION_TYPE = 'mongodb'       : 保存在MongoDB
SESSION_TYPE = 'sqlalchemy'    : 保存在关系型数据库

(8)SESSION_PERMANENT

        是否使用永久会话,默认True,但是如果设置了PERMANENT_SESSION_LIFETIME,则这个失效

(9)SESSION_USE_SIGNER

        是否为cookie设置签名来保护数据不被更改,默认是False;如果设置True,那么必须设置flask 的secret_key参数

(10)SESSION_KEY_PREFIX

在所有的会话键之前添加前缀,对于不同的应用程序可以使用不同的前缀;默认“session:”,
即保存在redis中的键的名称前都是以“session:”开头;

for example:
SESSION_KEY_PREFIX = 'session:'

(11)SESSION_REDIS

如果SESSION_TYPE = ‘redis’,那么设置该参数连接哪个redis,其是一个连接对象;如果不
设置的话,默认连接127.0.0.1:6379/0

for example:
SESSION_REDIS = redis.StrictRedis(host="127.0.0.1", port=6390, db=4)

3. 常用的falsk-session配置

# 指明对session数据进行保护
SECRET_KEY = '123'
SESSION_USE_SIGNER = True  
# 指明保存到redis中
SESSION_TYPE = "redis"  
SESSION_REDIS = redis.StrictRedis(host="127.0.0.1", port=6390, db=4)
# session的有效期,单位:秒
PERMANENT_SESSION_LIFETIME = 7200 

4. flask-session使用

from redis import Redis
from flask import Flask, session
from flask_session import Session
 
app = Flask(__name__)
app.debug = True
app.secret_key = 'xxxx'
app.config["SESSION_COOKIE_NAME"] = "#¥%……&*(#E$RTY$%RTY%^Y&U%^&*"
 # 如果设置为True,则关闭浏览器session就失效。
app.config['SESSION_PERMANENT'] = False  
# 是否对发送到浏览器上session的cookie值进行加密
app.config['SESSION_USE_SIGNER'] = False  
 # 保存到session中的值的前缀
app.config['SESSION_KEY_PREFIX'] = 'session:' 
 # session类型为redis
 app.config['SESSION_TYPE'] = 'redis'  
# 用于连接redis的配置
app.config['SESSION_REDIS'] = redis.Redis(host='127.0.0.1', port='6379', password='123123')  
 
Session(app)
 
 
@app.route('/index')
def index():
    session['k1'] = 'v1'
    return 'xx'
 
 
if __name__ == '__main__':
    app.run()

 

你可能感兴趣的:(Flask框架)