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

Cookie、Session、CBV加装饰器的三种方法

【0】cookie、session和Token的发展史

【1】Cookie的形式

  • 存储形式:k:v键值对
  • 存储位置:客户端
  • 缺点:不安全,信息可能会泄露

【2】session的形式

  • 标识符,表示我是当前用户加密出来的数据
  • 对敏感信息进行加密处理
    • 存储服务端
    • 标识符配合上你的加密串
  • 把某个数据的标识符+字符串全给服务端
    • 客户端存储格式
      • session_id:返回回来的标识符+加密串

【3】Cookie方法

        【3.1】设置Cookie

obj = HttpResponse('ok')obj.set_cookie('K','V')'''
HttpResponse:django的三板斧,返回的是字符串.set_cookie('k','v')  -------------  设置cookie  k:key值   v:value值设置cookie是不只是使用django三板斧中的HttpResponse,其余两个都能使用'''

        【3.2】cookie取值

request.COOKIES.get('k')

        【3.3】设置过期时间

obj.set_cookie('k','v',expires=3)obj.set_cookie('k','v',max_age=3)'''
expires:设置超时时间,单位为秒max_age:设置超时时间,单位为秒'''

        【3.4】删除cookie

def logout(request,*args,**kwargs):obj = redirect('/home/')obj.delete_cookie('sign')return obj

【4】Session

【4.1】session注意事项

  • session基于数据库表才能使用
    • 必须先迁移数据库,生层django_session表
  • session只对当次登录有效
    • 主动清除浏览器中本地存在的session
    • 验签发现,没有sessionid就会生成新的session
  • django_session表中的数据取决于浏览器
  • 同一个计算机(IP地址)上同一个浏览器只会有一条数据生效
  • 同一个计算机(IP地址)上多个浏览器会有多个数据生效
  • 当session过期的时候,可能会出现多条数据对应一个浏览器
    • 但是这些数据不会持久化存储,会被定时清理掉,可以手动清除也可以代码清除
  • 目的是为了节省服务器数据库资源

        【4.2】设置session

request.session['sign'] = 'user''''
sign  --------  k值user  --------  v值'''

        【4.3】session取值

sign = request.session.get('sign')

        【4.4】session设置过期时间

# 设置sessionrequest.session['key'] = 'value'# 设置过期时间request.session.set_expiry()'''
参数:1、整数:设置多少秒过期2、日期:设置到指定日期失效3、0:退出浏览器失效4、不写:失效时间取决于Django内部全局session失效的时间'''

        【4.5】清空session

def clear_session(request):request.session.delete()'''
request.session.delete(): 只删除服务端1、该方法用于删除当前用户的Session数据,但会保留Session的Key2、这意味着Session对象本身仍然存在,但其中的数据将被清空3、下次访问时,如果Session没有被重新填充,则会得到一个空的Session对象简而言之,就是使用request.session.delete()方法,会删除浏览器端的session,数据库中的数据不会被删除'''
def clear_session(request):request.session.flush()'''
request.session.flush():服务端和客户端都删除该方法用于完全删除当前用户的Session,包括Session对象和所有相关数据下次访问时,将创建一个新的空Session对象简而言之,就是删除了浏览器端和数据库中的session '''

        【4.6】保存session

        

1. 数据库Session
SESSION_ENGINE = 'django.contrib.sessions.backends.db'   # 引擎(默认)2. 缓存Session
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 引擎
SESSION_CACHE_ALIAS = 'default'                            # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置3. 文件Session
SESSION_ENGINE = 'django.contrib.sessions.backends.file'    # 引擎
SESSION_FILE_PATH = None                                    # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() 4. 缓存+数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'        # 引擎5. 加密Cookie Session
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'   # 引擎其他公用设置项:
SESSION_COOKIE_NAME = "sessionid"                       # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH = "/"                               # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None                             # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False                            # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True                           # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600                             # Session的cookie失效日期(2周)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False                  # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = False                       # 是否每次请求都保存Session,默认修改之后才保存(默认)

【5】CBV加装饰器的三种方法

from django.utils.decorators import method_decorator# 方式二:放在类视图上面 (放的装饰器函数,name指定你的视图函数里面的方法)
# @method_decorator(login_auth, name='get')
# @method_decorator(login_auth, name='post')
class UserView(View):# 方式三 : dispactch 方法加装饰器 : 本视图函数内所有的视图都需要走装饰器@method_decorator(login_auth)def dispatch(self, request, *args, **kwargs):# Try to dispatch to the right method; if a method doesn't exist,# defer to the error handler. Also defer to the error handler if the# request method isn't on the approved list.if request.method.lower() in self.http_method_names:handler = getattr(self, request.method.lower(), self.http_method_not_allowed)else:handler = self.http_method_not_allowedreturn handler(request, *args, **kwargs)# 方式一:加在视图函数上面# @method_decorator(login_auth)def get(self, request, *args, **kwargs):return HttpResponse("这是home页面")

         【5.1】补充

CSRF Token相关装饰器在CBV只能加到dispatch方法上

或者加在视图类上然后name参数指定为dispatch方法。

 

备注:

csrf_protect ----------无论settings.py文件中的中间件中的csrf有没有被注释掉都会报错

        1、为当前函数强制设置防跨站请求伪造功能

        2、即便settings中没有设置中间件

 

        

from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.utils.decorators import method_decoratorclass HomeView(View):@method_decorator(csrf_exempt)def dispatch(self, request, *args, **kwargs):return super(HomeView, self).dispatch(request, *args, **kwargs)def get(self, request):return render(request, "home.html")def post(self, request):print("Home View POST method...")return redirect("/index/")

 


csrf_exempt  ---------- settings.py文件中的中间件中的csrf没有注释掉也不会报错

        1、取消当前函数防跨站请求伪造功能

        2、即便settings中设置了全局中间件

 

        

from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.utils.decorators import method_decorator@method_decorator(csrf_exempt, name='dispatch')
class HomeView(View):def dispatch(self, request, *args, **kwargs):return super(HomeView, self).dispatch(request, *args, **kwargs)def get(self, request):return render(request, "home.html")def post(self, request):print("Home View POST method...")return redirect("/index/")

相关文章:

Cookie、Session、CBV加装饰器的三种方法

【0】cookie、session和Token的发展史 【1】Cookie的形式 存储形式:k:v键值对存储位置:客户端缺点:不安全,信息可能会泄露 【2】session的形式 标识符,表示我是当前用户加密出来的数据对敏感信息进行加密…...

【高级渗透篇】网络安全面试

【高级渗透篇】网络安全面试 1.权限维持2.代码安全Python语法相关 1.权限维持 Linux权限维持方法论 Windows权限维持方法论 2.代码安全 Python 语法相关 1、Python的值类型和引用类型是哪些 Python 中的值类型包括: 数字类型(如整数、浮点数、复数…...

【Flink】Process Function

目录 1、ProcessFunction解析 1.1 抽象方法.processElement() 1.2 非抽象方法.onTimer() 2、Flink中8个不同的处理函数 2.1 ProcessFunction 2.2 KeyedProcessFunction 2.3 ProcessWindowFunction 2.4 ProcessAllWindowFunction 2.5 CoProcessFunction 2.6 ProcessJo…...

【源码分析】zeebe actor模型源码解读

zeebe actor 模型🙋‍♂️ 如果有阅读过zeebe 源码的朋友一定能够经常看到actor.run() 之类的语法,那么这篇文章就围绕actor.run 方法,说说zeebe actor 的模型。 环境⛅ zeebe release-8.1.14 actor.run() 是怎么开始的🌈 Lon…...

python3实现类似expect shell的交互式与SFTP的脚本

前面写过一篇关于python实现类似expect shell的交互式能力的文章,现在补全一下加上sftp的能力脚本。 例子在代码中__example()方法。 依赖paramiko库,所以需要执行pip install paramiko来安装。 import os import queue import re import threading im…...

java游戏制作-飞翔的鸟游戏

一.准备工作 首先创建一个新的Java项目命名为“飞翔的鸟”,并在src中创建一个包命名为“com.qiku.bird",在这个包内分别创建4个类命名为“Bird”、“BirdGame”、“Column”、“Ground”,并向需要的图片素材导入到包内。 二.代码呈现 pa…...

NodeMCU ESP8266构建Web Server网页端控制设备

NodeMCU ESP8266构建Web Server网页端控制设备 前言 NodeMCU ESP8266 内部集成了TCP/IP协议栈,可以快速构建网络功能,搭建联网应用的硬件平台; ESP8266可以作为WiFi接入点(Station),这样可以方便连接互联…...

搭建区块链

参考B站FISCO BCOS(十八) java SDK与区块链交互_哔哩哔哩_bilibili 林中有神君 一、搭建第一个区块链网络 根据官方文档搭建:搭建第一个区块链网络 — FISCO BCOS v2.9.0 文档 (fisco-bcos-documentation.readthedocs.io) 使用javajdk 控制台2.6之后 本处是2.9.2…...

Python通过selenium调用IE11浏览器报错解决方法

前提 正常安装Python 工具,selenium 包可以正常导入。IE浏览器驱动 IEDriverServer.exe 已经正确放置到已经添加path目录的文件下。 报错现象: 解决方法 打开浏览器进入 internet 选项 切换到安全页签 ,去除“应用保护模式” 再次调用验证…...

Ubuntu 1.84.2Visual Studio Code 下载配置与vscode查看内存Hex Editor插件,简单易懂

目录 前言 一 首先我为啥要重装Vs Code呢? 二 下载1.84.2Visual Studio Code 三 配置Vscode终端字体 四 安装插件 前言 这是一篇将老版本的VsCode下载至最新版的博文,从下载到调试全篇 一 首先我为啥要重装Vs Code呢? 因为我想安装这个…...

opencv-图像金字塔

图像金字塔是一种图像处理技术,它通过不断降低图像的分辨率,形成一系列图像。金字塔分为两种类型:高斯金字塔和拉普拉斯金字塔。 高斯金字塔(Gaussian Pyramid): 高斯金字塔是通过使用高斯滤波和降采样&a…...

字符串匹配算法——KMP

有文本串aabaabaaf,模式串aabaaf问文本串中是否出现过模式串 暴力解法 最不用动脑子的,直接两层for循环,逐个匹配,匹配到不相等的值时把文本串后移一位,再重新比较。这种方法的复杂度是O(mn),该方法低效的…...

电子学会C/C++编程等级考试2023年03月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:字符长方形 给定一个字符,用它构造一个长为4个字符,宽为3个字符的长方形,可以参考样例输出。 时间限制:1000 内存限制:65536输入 输入只有一行, 包含一个字符。输出 该字符构成的长方形,长4个字符,宽3个字符。样例输入…...

微信小程序汽车租赁系统

微信小程序汽车租赁系统 本系统包含了3类用户,分别为客户、员工以及管理员,客户主要是满足自身的租车需求,员工主要负责车辆的调度问题和维修状况,管理员则是主要对人员、车辆和订单的管理。以下是对各自功能的详细介绍: 客户可…...

docker部署微服务

目录 docker操作命令 镜像操作命令 拉取镜像 导出镜像 删除镜像 加载镜像 推送镜像 部署 pom文件加上 在每个模块根目录加上DockerFile文件 项目根目录加上docker-compose.yml文件 打包,clean,package 服务器上新建文件夹 测试docker-compo…...

统计voc格式数据中的xml标签、bndbox到excel表格中

有这么个需求是将xml的内容: 1,filename 2.label 3.bndbox:xmin,xmax,ymin,ymax。 … 将这些东西写入excel表格中,方便我统计标签数量和框的分布! 于是撰写了脚本:xml2csv.py 我的xml文件形式如下。大家的目标检测格式大同小异! <annotation><folder>UAV_d…...

51单片机利用I/O口高阻状态实现触摸控制LED灯

51单片机利用I/O口高阻状态实现触摸控制LED灯 1.概述 这篇文章介绍使用I/O口的高阻状态实现一个触摸控制LED灯亮灭的实验。该实验通过手触摸P3.7引脚&#xff0c;改变电平信号控制灯的亮灭。 2.实验过程 2.1.实验材料 名称型号数量单片机STC12C20521LED彩灯无1晶振12MHZ1电…...

自动驾驶术语汇总

目录 智驾级别芯片相关自动驾驶相关辅助驾驶相关预警相关传感器相关泊车相关安全相关车灯相关 智驾级别 L0-L2属于辅助驾驶&#xff0c;L4-L5才算自动驾驶 L0&#xff08;Level 0&#xff09;&#xff1a;无自动化。这是大多数传统汽车的级别&#xff0c;所有的驾驶任务都需要…...

Jsonpath - 数据中快速查找和提取的强大工具

JSON&#xff08;JavaScript Object Notation&#xff09;在现代应用程序中广泛使用&#xff0c;但是如何在复杂的JSON数据中 查找和提取所需的信息呢&#xff1f; JSONPath是一种功能强大的查询语言&#xff0c;可以通过简单的表达式来快速准确地定位和提取JSON数据。本文将介…...

java中,通过替换word模板中的关键字后输出一个新文档

一、要用到的jar包 我已上传了相关的jar包&#xff0c;需要的可以通过以下链接直接下载&#xff1a; https://download.csdn.net/download/qq_27387133/88558034 具体jar包截图&#xff1a; 二、实现的代码 注意&#xff1a;文件要用docx格式!!! word变量替换的方法&#…...

别再傻傻分不清了!STM32的SWD、JTAG和串口下载,到底该用哪个?(附ST-LINK、CH340选购指南)

STM32开发工具链全解析&#xff1a;如何选择最适合你的程序下载方式 第一次接触STM32开发板时&#xff0c;面对板子上密密麻麻的接口和琳琅满目的下载器选项&#xff0c;相信不少工程师都有过选择困难症。SWD、JTAG、串口下载到底有什么区别&#xff1f;ST-LINK和CH340又该如何…...

终极cocur/slugify高级配置指南:掌握正则表达式、大小写控制和分隔符定制技巧

终极cocur/slugify高级配置指南&#xff1a;掌握正则表达式、大小写控制和分隔符定制技巧 【免费下载链接】slugify Converts a string to a slug. Includes integrations for Symfony, Silex, Laravel, Zend Framework 2, Twig, Nette and Latte. 项目地址: https://gitcode…...

Obsidian Border卡片式布局实战:打造个性化知识卡片系统

Obsidian Border卡片式布局实战&#xff1a;打造个性化知识卡片系统 【免费下载链接】obsidian-border A theme for obsidian.md 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-border Obsidian Border是一款专为Obsidian.md设计的高度可定制主题&#xff0c;通…...

MedGemma 1.5保姆级教程:无需联网,6006端口快速启动本地医疗AI

MedGemma 1.5保姆级教程&#xff1a;无需联网&#xff0c;6006端口快速启动本地医疗AI 你是不是也有过这样的经历&#xff1f;身体有点不舒服&#xff0c;想上网查查资料&#xff0c;结果要么被一堆广告淹没&#xff0c;要么看到各种吓人的说法&#xff0c;越看心里越没底。想…...

FF14过场动画跳过插件:3分钟快速配置完全指南

FF14过场动画跳过插件&#xff1a;3分钟快速配置完全指南 【免费下载链接】FFXIV_ACT_CutsceneSkip 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_ACT_CutsceneSkip 还在为《最终幻想14》副本中重复的过场动画浪费时间吗&#xff1f;FFXIV_ACT_CutsceneSkip插件…...

spring-boot-starter-validation字段数据校验

validation 概述 spring-boot-starter-validation 是 Spring Boot 官方提供的用于数据校验的启动器&#xff0c;它基于 Bean Validation API (JSR 380) 标准&#xff0c;并默认使用 Hibernate Validator 作为其实现。这个框架能让你通过声明式的注解&#xff0c;轻松地对控制器…...

Istio+Spring Cloud双栈治理实战:Java微服务网格化改造的7步标准化流程

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Java微服务服务网格治理 在现代云原生架构中&#xff0c;Java微服务常通过服务网格&#xff08;Service Mesh&#xff09;实现去中心化、语言无关的流量治理能力。Istio 是主流选择&#xff0c;其 Side…...

期刊推荐:Journal of Artificial Intelligence and Soft Computing Research(ISSN: 2083-2567)

学科领域&#xff1a; 计算机-人工智能 期刊类型&#xff1a; SCI/SSCI/AHCI 收录数据库&#xff1a; SCI(SCIE) ISSN&#xff1a; 2083-2567 中科院&#xff1a; 2区 影响因子&#xff1a; 2.4 JCR&#xff1a; Q3 咨询获取专业投稿服务 Journal of Artificial Intelli…...

Qwen3.5-4B-AWQ一文详解:3GB显存跑通全能力大模型的部署逻辑

Qwen3.5-4B-AWQ一文详解&#xff1a;3GB显存跑通全能力大模型的部署逻辑 1. 模型概述 Qwen3.5-4B-AWQ-4bit是阿里云通义千问团队推出的轻量级大语言模型&#xff0c;通过4bit AWQ量化技术实现了惊人的低资源占用。这个模型在保持强大能力的同时&#xff0c;将显存需求压缩到仅…...

圆满收官!桥田智能磁力换模硬核闪耀2026国际橡塑展

2026年04月24日&#xff0c;中国&#xff0c;上海为期四天的2026 Chinaplas 国际橡塑展于04月24日圆满结束&#xff01;作为橡塑行业饱受关注的盛会&#xff0c;本届国际橡塑展上&#xff0c;桥田智能携旗下核心产品与一站式解决方案重磅亮相&#xff0c;与众多行业专家、新老客…...