概述
本文讲解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,将会报异常
设置失效时间
下面的代码一定要 写在 视图函数 中,否则可能会 无效
首先要设置成永久,否则关闭浏览器就会失效
session.permanent = True设置失效时间
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