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

作者:Ywx_csdn 时间:2022-05-03 21:50:35 

前序

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、客户端(浏览器)

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

二、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理解与作用介绍

来源:https://blog.csdn.net/Ywx_csdn/article/details/127195470

标签:Flask,Cookie,Session
0
投稿

猜你喜欢

  • Python多线程以及多线程中join()的使用方法示例

    2021-02-07 16:25:03
  • 关于 Web,你可能不知道的

    2008-09-18 12:09:00
  • Python接口自动化系列之unittest结合ddt的使用教程详解

    2023-10-11 05:31:02
  • Laravel中使用阿里云OSS Composer包分享

    2023-11-04 23:31:23
  • fso怎样判断一个盘上是否有文件

    2007-09-26 12:35:00
  • Golang利用casbin实现权限验证详解

    2023-08-06 23:18:45
  • 编程活动中几个不良现象

    2008-09-01 12:23:00
  • asp如何对用户进行授权?

    2009-11-20 18:46:00
  • Flask模板继承深入理解与应用

    2021-01-24 12:31:40
  • Flask中基于Token的身份认证的实现

    2022-11-20 06:45:53
  • 在 Python 中利用Pool 进行多处理

    2022-03-07 13:10:36
  • pytorch中model.named_parameters()与model.parameters()解读

    2023-02-03 23:47:36
  • python logging模块的使用总结

    2021-11-15 06:46:53
  • Oracle 9i产品文档

    2010-07-16 13:35:00
  • Python基于OpenCV实现人脸检测并保存

    2023-10-07 00:43:37
  • oracle 常用的几个SQL

    2009-12-01 12:36:00
  • python的多元数据类型(下)

    2023-06-17 02:45:11
  • 如何基于Python爬取隐秘的角落评论

    2022-02-17 05:31:43
  • 一文详解CNN 解决 Flowers 图像分类任务

    2023-02-28 22:23:39
  • python中input()的用法及扩展

    2021-07-05 08:45:57
  • asp之家 网络编程 m.aspxhome.com