Flask之初学者(六)

Flask中的session



  cookie:是一种保存数据的格式,也可以看成是保存数据的一个“盒子”,服务器返回cookie给浏览器(由服务器产生),由浏览器保存在本地,下次再访问此服务器时浏览器就会自动将此cookie一起发送给服务器。

  session:也是一种保存数据的格式,也可以看成是保存数据的“盒子”,和cookie几乎是“同生共长”的,同cookie不同的是,session是保存在服务器中的。服务器通过cookie返回给浏览器session的相关信息(比如session的id),浏览器通过cookie将session的信息发送给服务器,服务器通过收到的cookie中的session信息来验证访问者的信息。

  cookie和session之间的关系:一般来说,session中保存有敏感数据(这些数据会进行加密后保存),但是这些数据并不会发送到浏览器中去,而是通过浏览器发送来的cookie中的session的id来进行验证并使用这些敏感数据;同时session是可以设置过期时间的,到时间后就可以删除服务器中session的数据了,当浏览器中cookie中的session在服务器中找不到时,服务器会重新要求浏览器进行验证并生成新的session。

  Flask中的session机制:session不是存放在服务器中的,而是将敏感数据进行加密后存放进session中,再将session放入cookie中返回给客户端(浏览器),下次浏览器访问服务器时,服务器从浏览器发送来的cookie中获取session,并将session中敏感数据解密后获取用户的数据。flask的这种session机制优点是可以节省服务器的开销。(如果使用的是谷歌浏览器,可以在“高级”-“隐私设置和安全性”-“内容设置”-“Cookie”-“查看所有Cookie和网站数据”找到对应网址的cookie,可以发现cookie中有命令session的数据,表明session确实是存放在浏览器的cookie中的)

Flask的session操作(from flask import session):

  1. 需要配置SECRET_KEY,值为包含24个字符的字符串(一般为随机字符串),使用“app.config[‘param_name‘]=value”的形式或者在配置文件中配置即可(注意:重启服务器后这个值改变了的话就获取不到之前设置的session了)。

  2. session可以看做是一个字典,session的增删改查操作跟字典的操作(包括使用的函数)是一样的。

  3. session过期时间设置:flask的session过期时间如果没有设置,那么默认就是浏览器回话结束(即关闭浏览器时)后自动过期,session的过期时间是由“session.permanent=True”指定,这时候会去读取配置中的“PERMANENT_SESSION_LIFETIME”的值(datetime.timedelta类型),这个值如果没有设置则默认是31天,也可以在配置中自己设置这个值,比如设置为7天:PERMANENT_SESSION_LIFETIME=datetime.timedelta(days=7)。

原文地址:https://www.cnblogs.com/guyuyun/p/9277879.html

时间: 2024-10-01 00:52:59

Flask之初学者(六)的相关文章

Flask实例教程六

Flask-SQLALchemy 是一个给你的应用添加 SQLALchemy 支持的 Flask 扩展.SQLALchemy 是Python语言的SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行,提供能兼容众多数据库(如 SQLite.MySQL.Postgres.Oracle.MS-SQL.SQLServer 和 Firebird)的企业级持久性模型. 一.为你的Flask应用加载Flask-SqlAlchemy扩展 from flask import Flask from fl

Flask之初学者(二)

Flask配置文件 在项目文件夹下新建一个"config"py文件,在代码中"import config"后使用"app.config.from_object(config)"即可使用配置文件中的参数(需大写),例如: DEBUG:设置为"True"时表示开启debug模式,设置为"False"表示关闭debug模式: SQLALCHEMY_DATABASE_URI:设置数据库连接字符串(这里使用的是sql

Flask之初学者(四)

Flask之URL URL传参:使用尖括号,如"<value>"将参数"value"通过URL传入视图函数,在视图函数中也需要有同名的参数.这样可以使用相同URL,但是因为参数不同而加载的数据却不同.如图: URL反转:反转是指通过视图函数名称得到其对应的URL(有反转也就有正转,即通过URL得到视图函数返回的内容,也就是我们平时的访问网页了),需要"url_for(endpoint, **values)",第一个参数是视图函数名称字

Flask之初学者(三)

Flask数据库操作 一.MySQL数据库安装(我用的是解压版) 解压:将下载的zip包解压到任意目录: 配置环境变量:将解压后的文件夹中的bin目录路径放入环境变量的path中: 配置文件:在解压的文件夹下(也就是bin的上一级目录)新建一个ini配置文件如"my-default.ini"(如果有就是修改其中的内容),在配置文件中写入(修改或追加)如下内容: [mysqld] basedir=D:\MySQL Server 8.0 datadir=D:\MySQL Server 8.

Flask之初学者(七)

Flask的g对象 g可以可以看作是单词global的缩写,使用"from flask import g"导入,g对象的作用是保存一些在一次请求中多个地方的都需要用到的数据,这些数据可能在用到的时候都需要去进行判断或其他处理之后才能获得,如果在第一次获取的时候就存放到g对象中,就可以避免一些不必要的操作.比如在某一个函数中定义了"g.username='Jason'"(可能为了定义这个值,会进行一些别的操作,比如数据库查询判断等,定义好了这个值后就不用再每次用到它的

Flask 学习 十六 部署

部署流程 manage.py 部署命令 每次安装升级只需运行deploy命令即可完成操作 @manager.command def deploy(): """执行部署任务""" from flask_migrate import upgrade from app.models import Role, User # 把数据库迁移到最新修订版本 upgrade() # 创建用户角色 Role.insert_roles() # 让所有用户都关注此用户

Flask框架详细上下文管理机制

原创gao.xiangyang 最后发布于2018-12-12 14:20:14 阅读数 1199 收藏展开文章目录Flaskflask和django的区别一.flask配置文件二.路由系统自定义正则路由三.蓝图创建蓝图自定义蓝图的static文件夹和trmplates文件夹为某一个蓝图内所有URL路由访问地址加前缀before_request--访问URL先触发四.子域名一般固定子域名通配符子域*五. threading.local--(和flask没有关系)* 六.请求上下文管理(源码剖析)

【Linux探索之旅】第二部分第六课:Nano,初学者的文本编辑器

内容简介 1.第二部分第六课:Nano,初学者的文本编辑器 2.第二部分第七课预告:软件安装,如虎添翼 Nano,初学者的文本编辑器 这一课比较简单,没有什么太难的概念.不过这一课会讲如何配置终端噢. 大家可以泡个泡面,烤只烤鸡:剥个卤蛋,慢慢来看. 之前的课程中,我们已经学会了在终端中用多种不同的方式来查看文件的内容,但是我们还不知道如何在终端中修改文件的内容. 为什么我们把文本编辑器推迟到现在来说呢?因为这是终端可以提供的强大功能之一. 在Linux终端的文本编辑器当中,比较著名的有:Nan

Quick-Cocos2d-x初学者游戏教程(六) --------------------- 游戏逻辑

Quick-Cocos2d-x初学者游戏教程(六) 上一章我 们介绍了开发中会用到的辅助工具,并创建了 GameScene 场景,接下来这章我们将继续 GameScene 的传(bai)奇(bi).不过在开始编写 GameScene 场景的代码之前,我们还是先来明确一下游戏的功能和实现方法.这样可以帮我们更好的理解并设计逻辑.下面是总结出的结论: 在 GameScene 场景中,我们将创建一个飞行的娃娃角色,这个角色是游戏的唯一主角.游戏初始状态下,这个角色有满满的生命值,但随着时间的推移,生命