flask-session

flask中的session机制:

把敏感数据经过加密放入session中,在把session存放到cookie,下次请求时再从浏览器发送过来的cookie中读取session, 再从session中读取敏感数据进行解密,最终获得用户数据。

  • 设置:
1 import os
2 
3 # session相关设置,SECRET_KEY要24个字符的字符串
4 SECRET_KEY = os.urandom(24)
config.py

或者不使用config可直接在其他py文件设置:

app.config['SECRET_KEY'] = os.urandom(24)

使用代码:

  • session赋值:
from flask import Flask ,session
import config
import os

app = Flask(__name__)
app.config.from_object(config)

# SECRET_KEY在config文件中设置(加盐)或者
app.config['SECRET_KEY'] = os.urandom(24)

@app.route('/')
def index():
    # 添加数据到session
    # 操作的时候与操作字典相同
    session['username'] = 'claire'
    return 'index'

 

  • 获取:如果服务器重启,secret——key会发生变化,则session就无法正常解密,除非将secret_key写死等于一个固定的值。
@app.route('/get/')
def get():
    return session.get('username')
  • 删除:
@app.route('/delete/')
def delete():
    print(session.get('username'))
    session.pop('username')
    print(session.get('username'))
    return 'success'

 

  • 删除所有session数据:
@app.route('/clear/')
def clear():
    print(session.get('username'))
    # 删除session所有数据
    session.clear()
    print(session.get('username'))
    return 'clear success'

 设置session过期时间:

  • 默认:

session.permanent = True
  • permanent = True时,过期时间为31天

  • 设置具体时间:(要同时设置permanent=True)
from datetime import timedelta
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)

 

posted @ 2018-10-06 15:58  clairexxxx  阅读(110)  评论(0)    收藏  举报