Flask中Cookie和Session理解与作用介绍

 更新时间:2022年10月13日 10:37:44   作者:Ywx_csdn  
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能,Flask中Cookie和Session有什么区别呢

前序

1、cookie介绍

Cookie是一段不超过4KB的小型文本数据,保存在客户端浏览器中,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。其中 :

(1) Name/Value:设置Cookie的名称及相对应的值,对于认证Cookie,Value值包括Web服务器所提供的访问令牌。

(2) Expires属性:设置Cookie的生存期。有两种存储类型的Cookie:会话性与持久性。Expires属性缺省时,为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效;持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效 。

(3) Path属性:定义了Web站点上可以访问该Cookie的目录 。

(4) Domain属性:指定了可以访问该 Cookie 的 Web 站点或域。

2、session介绍

Session:与cookie功能效果相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。

当访问服务器否个网页的时候,会在服务器端的内存里开辟一块内存,这块内存就叫做session,而这个内存是跟浏览器关联在一起的。这个浏览器指的是浏览器窗口,或者是浏览器的子窗口,意思就是,只允许当前这个session对应的浏览器访问,就算是在同一个机器上新启的浏览器也是无法访问的。而另外一个浏览器也需要记录session的话,就会再启一个属于自己的session。

一、cookie学习

1、设置cookie

  • 在服务器设置cookie需要导入make_response包
  • response=make_response(‘hello world’) 括号这里传入的值是在客户端响应的内容
  • response.set_cookie(‘username’,‘mashibing’,max_age=3600) 第一个值是cookie名称,第二个值cookie内容,第三个值设置cookie的有效时间
  • 这个有效时间在服务器没有关闭的状态下,有效时间内,即使你关闭了客户端(浏览器),再次打开客户端(浏览器)仍能访问到。
from flask import *
app=Flask(__name__)
#设置cookie以及有效性期
@app.route('/cookie')
def set_cookiei():
    response=make_response('hello world')
    response.set_cookie('username','mashibing',max_age=3600)
    return response
#读取
@app.route('/get_cookie')
def get_cookie():
    resp=request.cookies.get('username')
    return resp
if __name__ == '__main__':
    app.run()

2、客户端(浏览器)

二、session学习

1、设置SECRET_KEY

  • 这里SECRET_KEY的值是可以随机设置,可以使用os.urandom(24) 随机生成24位字符
  • 此值 [ SECRET_KEY 设置]是保护签名数据的关键 - 保持此安全至关重要,否则攻击者可以使用它来生成自己的签名值。
  • 设置SECRET_KEY 配合加密算法生成sessionID
  • PERMANENT_SESSION_LIFETIME=timedelta(minutes=30) 设置该sessionID在服务器存储的时间,在有效时间内客户端(浏览器)关掉后再次重新访问时,会对其session ID进行校验,若是之前保存在服务器的session ID对应,则可以拿到之前session值。
class Df(object):
    SECRET_KEY=os.urandom(24)
    PERMANENT_SESSION_LIFETIME=timedelta(minutes=30)

2、设置session

  • 这里设置session值在客户端是看不到的,相对安全,除非服务器崩了。
  • 设置的session会保存在服务器。
  • session.permanent=True #这行代码也要写不然前面定义的时间失效。
  • 设置session是以键值对的形式。
@app.route('/test1')
def test1():
    session.permanent=True  #这行代码也要写不然前面定义的时间失效
    #设置session
    session['un']='ywx'
    session['pwd']='123456'
    return 'hello ywx'

3、获取session值

通过session.get() 获取定义的值

#读取session
@app.route('/test2')
def test2():
    un=session.get('un')
    pwd=session.get('pwd')
    print(un,pwd)
    return '获取session的值'

4、整体代码展示

from flask import *
import os
from datetime import timedelta
app=Flask(__name__)
#设置SECRET_KEY
class Df(object):
    SECRET_KEY=os.urandom(24)
    PERMANENT_SESSION_LIFETIME=timedelta(minutes=30)
#导进来参数
app.config.from_object(Df)
@app.route('/test1')
def test1():
    session.permanent=True  #这行代码也要写不然前面定义的时间失效
    #设置session
    session['un']='ywx'
    session['pwd']='123456'
    return 'hello ywx'
#读取session
@app.route('/test2')
def test2():
    un=session.get('un')
    pwd=session.get('pwd')
    print(un,pwd)
    return '获取session的值'
if __name__ == '__main__':
    app.run()

5、客户端(浏览器)展示

到此这篇关于Flask中Cookie和Session理解与作用介绍的文章就介绍到这了,更多相关Flask Cookie Session内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简单介绍Python中的几种数据类型

    简单介绍Python中的几种数据类型

    Python基本内置数据类型有很多种,比如:整型(数字)、字符串、元组、列表、字典和布尔类型,下面就来给大家详细介绍下
    2016-01-01
  • Python基于time模块求程序运行时间的方法

    Python基于time模块求程序运行时间的方法

    这篇文章主要介绍了Python基于time模块求程序运行时间的方法,涉及Python time模块的使用及数值运算相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • 使用pandas模块实现数据的标准化操作

    使用pandas模块实现数据的标准化操作

    这篇文章主要介绍了使用pandas模块实现数据的标准化操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 微信公众号接入ChatGPT机器人的方法

    微信公众号接入ChatGPT机器人的方法

    这篇文章主要介绍了微信公众号接入ChatGPT机器人的方法,不难,总共可以分为两步,一是在云服务器上部署自定义消息处理服务,二是微信公众号配置自己的消息处理服务器,本文给大家讲解的非常详细,需要的朋友可以参考下
    2023-02-02
  • Python合并多个Excel数据的方法

    Python合并多个Excel数据的方法

    这篇文章主要介绍了Python合并多个Excel数据的方法也就是说将多个excel中的数据合并到另一个表中,本文通过实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • 用Python替换证件照背景颜色

    用Python替换证件照背景颜色

    大家好,本篇文章主要讲的是用Python替换证件照背景颜色,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Python绘图库之pyqtgraph的用法详解

    Python绘图库之pyqtgraph的用法详解

    PyQtGraph建立在Qt QGraphicsScene的原生库,可提供更好更高性能绘图能力,特别是对于实时数据,可以提供交互性和使用Qt图形小部件轻松自定义绘图的能力。本文就来解释一下pyqtgraph的用法,需要的可以收藏一下
    2022-12-12
  • 解决pytorch-yolov3 train 报错的问题

    解决pytorch-yolov3 train 报错的问题

    今天小编就为大家分享一篇解决pytorch-yolov3 train 报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 浅析python标准库中的glob

    浅析python标准库中的glob

    glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。这篇文章主要介绍了python标准库中的glob的相关知识,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2020-03-03
  • python的import 机制是怎么实现的

    python的import 机制是怎么实现的

    这篇文章主要介绍了python的import 机制是怎么实现的,import有Python运行时的全局模块池的维护和搜索、解析与搜索模块路径的树状结构等作用,下文具体相关介绍需要的小伙伴可以参考一下
    2022-05-05

最新评论