flask之session

概述

本文讲解Flask框架的 默认 session机制

在Flask框架中,与其他框架不同,将session中的数据,加密后,作为cookie,发送给浏览器,服务器端不保存session

缺点:数据虽然加密,但还是容易 泄露

使用session

导入session

from flask import session

定义密钥

app.config['SECRET_KEY'] = 'ABCDE'

将数据存储到session

session['username'] = '李云龙'

从session读取数据

方式一(推荐):
username = session.get('username')

如果不存在该key,返回None

方式二:
username = session['username']

如果不存在该key,将会报异常

设置失效时间

下面的代码一定要 写在 视图函数 中,否则可能会 无效

  1. 首先要设置成永久,否则关闭浏览器就会失效

    session.permanent = True
    
  2. 设置失效时间

    from datetime import timedelta
    # 30分钟有效
    app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(minutes=10)
    

    或者

    from datetime import timedelta
    # 1小时有效
    app.permanent_session_lifetime = timedelta(hours=1)
    

    或者

    from datetime import timedelta
    # 7天有效
    app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
    

例子

# coding=utf-8

from flask import Flask,session,request,redirect

app = Flask(__name__)

# 必须定义session的密钥,否则报错
app.config['SECRET_KEY'] = 'ABCDE'

@app.route('/login',methods=['POST'])
def login():
    username=request.form.get('username')
    password=request.form.get('password')
    if username=='李雷' and password=='123456':
        session['username']=username
        msg='登录成功!'
    else:
        msg='登录失败!'
    return msg

@app.route('/')
def index():
    username=session.get('username')
    if username:
        return '首页,您好:%s'%username
    else:
        return redirect('/static/login.html')


if __name__ == "__main__":
    app.run(debug=True)

感谢:
https://www.jianshu.com/p/278d4f59839d
https://www.cnblogs.com/practice-h/p/8883487.html