1. session、cookie和中间件使用
时间:2019-08-22
本文章向大家介绍1. session、cookie和中间件使用,主要包括1. session、cookie和中间件使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
cookie
读cookie request.COOKIE["username"] = "fu"
写cookie response.set_cookie("username", "fu")
删cookie response.delete_cookie('username')
参数
key: 键
value: 值
max_age:过期时间
expires:过期的具体时间
path: 生效路径
domain: 生效的域名
secure: HTTPS传输时应设置为true
httponly: 仅用于传输http, JavaScript无法获取(限制JavaScript的用处)
session
读session request.session.get("session")
写session request.session["username"] = "fu"
删session指定 del request.session["键"]
清session所有 request.session.flush( )
session表位置: "django.contrib.sessions.middleware.SessionMiddleware"
设置存储方式为数据库:SESSION_ENGING = "django.contrib.sessions.backends.db"
用户认证组件
django自带用户表 auth_user user和password取自request中的post
1. auth = authenticate(username=user, password=pwd)
去auth_user中查找如果有信息返回user对象 如果不存在返回None 于是引出下列方法
2. auth.login(request, auth) 用户登录
3. auth.logout(request) 用户登出
4. user = User.obje.create_user(username=user, password=pwd)
User来自from django.contrib.auth.models import User 创建用户
中间件
request和response之间的处理过程
浏览器 ---> wsgi.py ---> 中间件 ---> url控制器 ---> 视图函数 ---> 后续操作
自定义的配置 MIDDLEWARE = "uyils.middleware.PrintIpMiddleware"
创建一个文件夹 utils 文件middlewares.py
class PrintIpMiddleware:
def process_request(self, request): # 硬性条件 必须process_xxxx
print(你想干的事情)
返回的中间件必须返回return response
应用:拦截(request.path in ['/login/', 'all'])
request.user.is_authencated 登录为true 没登录为false
中间件函数执行顺序 :
m1 process_request ---> m2 process_request ---> m2 process_response ---> m1 process_response
其他中间件
process_view 顺序
process_request --> url ---> process_view ---> 视图函数 ---> process_response
process_exception 顺序
process_request --> url ---> 视图函数 ---> process_exception ---> process_response
应用案例 某些ip访问服务器是否 过高 进行拦截限制每分钟不能超过20次
待添加:
原文地址:https://www.cnblogs.com/fuyi2345/p/11395626.html
- 漏洞预警 | Ubuntu 16.04版本存在本地提权漏洞(附EXP)
- 通过“震网三代”和Siemens PLC 0day漏洞,实现对工控系统的入侵实验
- 安卓端渗透工具DVHMA:自带漏洞的混合模式APP
- 小萝莉说Crash(二): Unrecognized selector xxx 之 ForwardInvocation
- 5分钟教程:如何通过UART获得root权限
- 源码级剖析PHP 7.2.x GD拒绝服务漏洞
- 美女程序媛发福利,读懂ANR的trace文件So easy
- Openshift高阶探索实验
- 卡卡卡!小萝莉告诉你开发iOS应用如何避免卡顿
- Bugly即将支持的ANR,精神哥告诉你是个什么鬼?
- Go语言Goroutine与Channel内存模型
- 手把手教 | 深度学习库PyTorch(附代码)
- 如何定位Obj-C野指针随机Crash(一):先提高野指针Crash率
- 如何定位Obj-C野指针随机Crash(二):让非必现Crash变成必现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Task 编程中的异常处理
- AngularJS 中的 factory、 service 和 provider
- 设计模式之适配器模式
- 设计模式之组合模式
- MvvmCross 框架中的数据绑定语法
- Vivado IP核锁定的解除方法
- Flutter Dojo设计之道——骚气的闪屏动画是如何实现的
- 数据处理 | pandas入门专题——离散化与one-hot
- 聊聊dubbo-go的failfastCluster
- 一分钟学Python|Python的循环语句
- OpenCV4.4 中SIFT特征匹配调用演示
- 这些Python库虽然冷门,但功能真的很强大!
- SQL查找是否"存在",别再count了,很耗费时间的
- 采用 Vue 编写的功能强大的 Swagger-ui 页面
- SQL 计算中位数