https://www.cnblogs.com/notzy/p/9187304.html

一、配置SECRET_KEY

因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。配置方法一般有两种。

配置方法一:

新建一个config.py的文件配置secret_key 
config.py

 1 SECRET_KEY = 'XXXXXXXXX' 

然后在主运行文件里面添加config文件里面的内容。 
main.py

1 # encoding: utf-8
2
3 from flask import Flask,session
4 import config
5
6 app = Flask(__name__)

配置方法二:

直接在主运行文件里面配置。配置config的时候也是和操作字典是一样的 
main.py

1 # encoding: utf-8
2
3 from flask import Flask,session
4
5 app = Flask(__name__)
6 app.config['SECRET_KEY'] = 'XXXXX'

产生方法

 可以引入OS模块中的产生一个24位的随机字符串的函数,这种方法有个缺点,就是服务器每次启动之后这个SECRET_KEY的值都会变。具体自己体会!

1 import os
2
3 app.config['SECRET_KEY'] = os.urandom(24) # 随机产生24位的字符串作为SECRET_KEY

二、操作session –操作session就如同操作字典!

1.设置session

 1 from flask import Flask,session2 import os3 4 app = Flask(__name__)5 app.config['SECRET_KEY'] = os.urandom(24)6 7 # 设置session8 @app.route('/')9 def set():
10     session['username'] = 'liefyuan' # 设置“字典”键值对
11     return 'success'
12
13 if __name__ == '__main__':
14     app.run()

2.读取session

 因为session就像字典一样所以,操作它的时候有两种方法:

  • (1)result = session[‘key’] :如果内容不存在,将会报异常
  • (2)result = session.get(‘key’) :如果内容不存在,将返回None

所以,使用第二种方法获取session较好。

 1 from flask import Flask,session2 import os3 4 app = Flask(__name__)5 app.config['SECRET_KEY'] = os.urandom(24)6 7 # 设置session8 @app.route('/')9 def set():
10     session['username'] = 'liefyuan' # 设置“字典”键值对
11     return 'success'
12
13 # 读取session
14 @app.route('/get')
15 def get():
16     # session['username']
17     # session.get('username')
18     return session.get('username')
19
20 if __name__ == '__main__':
21     app.run()

3.删除session

 1 #encoding: utf-82 3 from flask import Flask,session4 import os5 6 app = Flask(__name__)7 app.config['SECRET_KEY'] = os.urandom(24)8 9
10 # 设置session
11 @app.route('/')
12 def set():
13     session['username'] = 'liefyuan'
14     return 'success'
15
16
17 # 读取session
18 @app.route('/get/')
19 def get():
20     # session['username']
21     # session.get('username')
22     return session.get('username')
23
24
25 # 删除session
26 @app.route('/delete/')
27 def delete():
28     print session.get('username')
29     session.pop('username')
30     print session.get('username')
31     return 'success'
32
33
34 if __name__ == '__main__':
35     app.run()

4.清除session中所有数据

 1 #encoding: utf-82 3 from flask import Flask,session4 import os5 6 app = Flask(__name__)7 app.config['SECRET_KEY'] = os.urandom(24)8 9
10 # 设置session
11 @app.route('/')
12 def set():
13     session['username'] = 'liefyuan'
14     return 'success'
15
16
17 # 读取session
18 @app.route('/get')
19 def get():
20     # session['username']
21     # session.get('username')
22     return session.get('username')
23
24
25 # 删除session
26 @app.route('/delete')
27 def delete():
28     print session.get('username')
29     session.pop('username')
30     print session.get('username')
31     return 'success'
32
33
34 # 清除session中所有数据
35 @app.route('/clear')
36 def clear():
37     print session.get('username')
38     # 清除session中所有数据
39     session.clear
40     print session.get('username')
41     return 'success'
42
43 if __name__ == '__main__':
44     app.run()

三、设置session的过期时间

 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束。session.permanent = True在flask下则可以将有效期延长至一个月。下面有方法可以配置具体多少天的有效期。

  • 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
  • 如果设置了session的permanent属性为True,那么过期时间是31天。
  • 可以通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间,这个值的数据类型是datetime.timedelay类型。

使用的需求:

  • 1.在登录网页界面,下面有一个“记住我”选项,如果点击了则设置session的有效期长一点。就是设置这个!

1 # 设置session
2 @app.route('/')
3 def set():
4     session['username'] = 'liefyuan'
5     session.permanent = True # 长期有效,一个月的时间有效
6     return 'success'

一种更先进的配置有效期的方法:(比如配置7天有效)

  • 1.引入包:from datetime import timedelta
  • 2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
  • 3.设置:session.permanent = True

 1 #encoding: utf-82 3 from flask import Flask,session4 from datetime import timedelta5 import os6 7 app = Flask(__name__)8 app.config['SECRET_KEY'] = os.urandom(24)9 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
10
11
12 # 设置session
13 @app.route('/')
14 def set():
15     session['username'] = 'liefyuan'
16     session.permanent = True
17     return 'success'

Flask中的session操作相关推荐

  1. Flask 中的session 和 cookie

    文章目录 前言 什么是Cookie? Cookie 和 Session 什么是Seesion? 什么是token? Cookie和session的区别 token和session的区别 Flask中使 ...

  2. flask中的session伪造问题

    前言 这段时间刷题遇见过几次在flask框架中伪造session的,也经常和其他flask框架的两大漏洞SSTI和py反序列化结合来考,今天就写这篇文章学习一下在ctf题目里flask中的sessio ...

  3. Flask框架—flask中的session

    Flask中的session session设置 Flask除请求对象之外,还有一个 session 对象. 它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 C ...

  4. Flask中的session简易用法教程,以及permanent通俗解释

    总有各种高大上的用法,但是实际写起来就是那么两三行,直接上demo: from datetime import timedelta from flask import Flask,sessionapp ...

  5. Flask中的session伪造

    本文主要以buuctf中的一道题为例来讲解:[HCTF 2018]admin 看了一位师傅的操作,太强了,就来记一下笔记. Flask之session伪造 - FreeBuf网络安全行业门户 之前做这 ...

  6. flask中的数据操作

    flask中数据访问: pip install flask-sqlalemy 创建数据: 创建app的工厂from flask import Flask from flask_sqlalchemy i ...

  7. flask中的session,render_template()第二和参数是字典

    1. 设置一个secret_key 2.验证登入后加上session,这是最简单,不保险 . 3.注意render_template传的参数是字典 转载于:https://www.cnblogs.co ...

  8. flask中的session对象方法

    'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys ...

  9. Flask 中内置的 Session

    Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from ...

最新文章

  1. 22条API设计的最佳实践
  2. RHCE课程-RH253Linux服务器架设笔记五-APACHE服务器配置(4)
  3. Windows核心编程 第四章 进程(上)
  4. 关于documentFrgament 文档片段的简单理解
  5. 简单BootLoader
  6. 深入理解分布式技术 - BASE 理论
  7. 超过4g的文件怎么上传到linux,怎么免费上传大于4G的文件到百度云 大于4G的文件不开会员怎么上传到百度云...
  8. matlab nntool教程,Matlab nntool 应用实例教材.doc
  9. CMU 15-213 Introduction to Computer Systems学习笔记(10) The Memory Hierarchy
  10. 苹果电脑打不开网页连接不到服务器,苹果电脑chrome打不开网页怎么办_MAC上的chrome打不开网页如何解决-win7之家...
  11. TexturePacker纹理打包打方法及技巧
  12. 【Benewake(北醒) 】中距 TF02-i 40m工业版本CAN/485介绍以及资料整理
  13. Oracle时间以半小时为单位取整
  14. Maix Bit(K210) 裸机开发教程(二)串口通信
  15. 贺州教师评职称计算机考试,2017年广西贺州市中职教师系列中级职称评选结果公示...
  16. chrome开源工程(转)
  17. SDUT实验七编程题7-3 求算式的和[1]
  18. 移轴镜头摄影计算机作业模板,梦寐以求的移轴效果,被我用50mm定焦镜头实现了,简单易学出效果...
  19. 计算机读卡器突然无法识别,win7识别不了读卡器怎么解决?win7电脑识别不了读卡器的解决方法...
  20. 云运维态势感知-可视化指挥调度

热门文章

  1. I/O多路转接之poll,epoll
  2. centos5.8上安装git server
  3. 新增两款Skin(clover与Valentine)
  4. mysql那本书适合初学者_3本书适合初学者
  5. 数据可视化及其重要性:Python
  6. Pytorch框架中SGD&Adam优化器以及BP反向传播入门思想及实现
  7. 208. 实现 Trie (前缀树)
  8. leetcode1143. 最长公共子序列(动态规划)
  9. react 图像识别_无法在React中基于URL查找图像
  10. aws dynamodb_DynamoDB备忘单–您需要了解的有关2020 AWS认证开发人员助理认证的Amazon Dynamo DB的所有信息