flask之session 作者:马育民 • 2019-06-11 22:07 • 阅读:10172 # 概述 本文讲解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 原文出处:http://malaoshi.top/show_1EF3UxAkgg4x.html