当前位置: 首页 > news >正文

Flask项目入门—会话技术Cookie和Session

Session和Cookie都是用于跟踪用户会话的技术、它们可以存储用户信息,以便在用户与网站进行交互时提供个性化的体验。然而,这两者在存储位置、使用方式、安全性等方面存在显著的差异。

工作原理/流程

Cookie

1、用户第一次访问时候服务器生成 Cookie:服务器在响应头中向客户端发送一个或多个 Cookie。
2、客户端存储 Cookie:客户端浏览器将这些 Cookie 存储到本地(存储方式依赖于浏览器实现)。
3、后续请求携带 Cookie:浏览器在后续请求中自动携带这些 Cookie,服务器可以读取 Cookie 中的信息,进行相应的处理。
4、Cookie 属性设置:Cookie 可以设置 HttpOnly、Secure 等属性来增强安全性。

Session

1、用户首次访问服务器:客户端发送请求,服务器在响应中创建一个唯一的 Session ID。
2、Session ID 存储:这个 Session ID 通常以 Cookie 的形式存储在客户端。
3、后续请求:客户端每次发送请求时,都会带上 Session ID,服务器根据这个 Session ID 查找对应的 Session 数据。
4、服务器端存储:Session 数据(如用户信息、购物车)存储在服务器的内存、数据库或其他持久化存储中。

Cookie和Session的区别

区别CookieSession
存储位置浏览器服务端
存储类型string类型Object类型
生命周期Cookie可以设置过期时间。如果设置了过期时间,那么即使关闭了浏览器,Cookie仍然会保存在本地硬盘中,直到过期时间到达才会被删除;如果没有设置过期时间,那么关闭浏览器时Cookie就会被删除默认是会话期间有效,可自定义时间
性能占用网络带宽,影响加载速度依赖服务器性能,存储过多可能导致服务器压力

Cookie和Session的操作

Cookie的操作在通过flask引入的response或者request操作,session通过flask引入的session来操作

from flask import Blueprint, render_template, request, redirect, session

1、设置

Cookie

response.set_cookie('user', username)  # 默认浏览器关闭则cookie失效
#过期时间:# max_age: 秒# expires: 指定的datetime日期
response.set_cookie('user', username, max_age=3600*24*7)   
response.set_cookie('user', username, expires = datetime.datetime(2023, 12, 12))     

session

 # 设置sessionsession['user'] = usernamesession.permanent = True

2、获取

Cookie

request.cookies.get('user')

session

session.get('user')

3、删除

Cookie

response.delete_cookie('user')

session

session.pop('user')
session.clear()  # 慎用,会删除服务器下的所有session

http://www.lryc.cn/news/493551.html

相关文章:

  • 通达OA down存在信息泄露漏洞
  • Python中的简单爬虫
  • Scala入门基础(20)数据集复习拓展
  • leetcode 二叉树的最大深度
  • elasticsearch集群部署及加密通讯
  • ML 系列:第 32节 — 机器学习中的统计简介
  • CatVton升级版?CatVton-Flux:AI虚拟试衣方案新选择。
  • JavaEE---计算机是如何工作的?
  • 十、Spring Boot集成Spring Security之HTTP请求授权
  • C#基础控制台程序
  • 【网络安全】CSRF
  • 网络原理(一)—— http
  • 【实体配置】.NET开源 ORM 框架 SqlSugar 系列
  • 【Zookeeper】四,Zookeeper节点类型、通知、仲裁、会话
  • 【二分查找】力扣 34. 在排序数组中查找元素的第一个和最后一个位置
  • 以达梦为数据库底座时部署的微服务页面报乱码,调整兼容模式
  • Java设计模式 —— 【创建型模式】工厂模式(简单工厂、工厂方法模式、抽象工厂)详解
  • KST-3D01型胎儿超声仿真体模、吸声材料以及超声骨密度仪用定量试件介绍
  • 网络原理->DNS协议和NAT协议解
  • 基于yolov8、yolov5的100种中药材检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • RuoYi排序
  • Python+Pytest+Yaml+Allure数据参数化(DDT)数据驱动(一)
  • BASLER工业相机维修不能触发拍照如何处理解决这个问题
  • Could not locate device support files.
  • linux系统中常用文件日常使用命令记录
  • 【C++打怪之路Lv16】-- map set
  • TPU-MLIR 项目源码结构分析
  • IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“
  • Sourcetree:一款强大的Git客户端
  • Linux环境变量与本地变量