Django框架会话技术实例分析【Cookie与Session】
作者:微信1257309054 发布时间:2021-06-24 03:41:53
本文实例讲述了Django框架会话技术。分享给大家供大家参考,具体如下:
会话技术
1、Cookie
客户端会话技术(数据存储在客户端)
以key-value的形式进行存储
cookie的操作都是通过Response来实现的
典型场景
购物车
登录信息
支持过期时间
Cookie清除策略
默认关闭浏览器时cookie自动清除
配置Cookie过期时间
max-age=0 关闭就失效
max-age=None 永久有效
max-age = int 单位秒
expires 过期时间,和max-age功能基本一致
用户登出,就是清除了cookie(令牌)
2、Session
服务端会话技术
Session依赖于Cookie
将Session在数据库中的session_key,当作sessionid,存储在cookie中
Session数据存储在数据库中,并且做了基本的数据安全处理(base64编码)
3、Token
服务端会话技术
相当于手动实现的session
值应该是唯一的
要通过特定算法保证唯一
时间
ip
域名
网卡 mac
随机数
4、解决痛点
解决短连接无法保存用户状态的问题
延长了请求的生命周期
用户管理实例
密码对谁都是不透明的
用户注册
将数据存储到数据库
数据安全
用户登陆
将登陆提交过来的信息和数据库内的信息进行校验
返回不成功结果要刻意模糊概念
用户信息
根据用户的唯一标识,去获取用户
用户退出
清除令牌
清理cookie,session,或 token
5、数据安全
策略
服务器的数据对任何人来说都应该是不可见的(不透明)
可以使用常见的摘要算法对数据进行摘要(md5,sha)
在所有数据验证的地方都加上安全保护措施
6、摘要算法
hashlib
输出默认都是128位二进制数
32位16进制数
哪怕【消息原文】被改动一丁点,【篡改版消息生成的消息摘要】都会与【原始消息所生成的消息摘要】的大相径庭
sha
md5
用来验证数据完整性(不被篡改)
统一输出
单向不可逆
7、UUID
唯一标识
纳秒级的时间
1ns 创建 1m个id
mac 地址
机器编码
随机数
uuid
uuid1()
uuid3()
uuid4()
uuid5()
8、常用API
生成消息摘要
def generate_password(password):
#定义算法
sha = hashlib.sha512()
#更新算法内容区(密码字节)
sha.update(password.encode("utf-8"))
#使用算法生成摘要
return sha.hexdigest()
cookie
response.set_cookie("uname", username)
response.set_cookie("uname", username, max_age=30)
response.set_cookie("uname", username, expires=timedelta(minutes=1))
uname = request.COOKIES.get('uname',None)
response.delete_cookie("uname")
助记
操作客户端唯有通过Response对象
方法无非get,set,delete
session
- uname = request.session.get('uname')
- request.session['uname'] = username
- request.session.flush()
- 同时清除cookie 和 session
- del request.session['uname']
助记
session是存在于服务端本地的,而Request的COOKIE当中存有sessionid,因此通过Request对象去关联用户的session
方法无非get,set,del,flush
token
response.set_cookie("utoken", token)
utoken = request.COOKIES.get("utoken")
希望本文所述对大家基于Django框架的Python程序设计有所帮助。
来源:https://blog.csdn.net/lm_is_dc/article/details/80516321
猜你喜欢
- 上文我们总结过了Python多继承的相关知识,没看过的小伙伴们也可以去看看,今天给大家介绍Python类的单继承相关知识。一、类的继承面向对
- 1、爬取目标网站:业绩预告_数据中心_同花顺财经(ps:headers不会设置的可以看这篇:Python 用requests.get获取网页
- 前言上一篇文章写了关于字典操作方法的增删改,这篇主要讲解如何查找字典数据。查找数据写法一共有两种,一种能够是key值查找,另外一种是按照函数
- 本文实例讲述了python比较两个列表大小的方法。分享给大家供大家参考。具体如下:L1 = [1, ('a', 3)]L2
- PS:这段时间有点不在状态,刚刚找回那个状态,那么我们继续曾经的梦想今天我们来补充一下文件的上传的几种方式:首先我们先补充的一个知识点:一、
- 我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多
- 最近在使用Go语言搞一个用户登录&注册的功能,说到登录&注册相关,我们油然会产生一种增加验证码的想法,因此着手实现,后来在G
- 问题问题是这样的,要把一个数组存到tfrecord中,然后读取a = np.array([[0, 54, 91, 153, 177,1],
- 几个常用装饰器pytest.ini 配置文件 例子:[pytest]addopts = -v -s --html=py_test/scrip
- 用mysqlbinlog.exe查看二进制日志是否启用了日志mysql>show variables like 'log%
- API的设计是一个艺术活。往往需要其简单、易懂、整洁、不累赘。很多时候,我们在底层封装一个方法给高层用,而其它的方法只是为了辅助这个方法的。
- 本文实例讲述了JS 设计模式之:单例模式定义与实现方法。分享给大家供大家参考,具体如下:良好的设计模式可以显著提高代码的可读性,降低复杂度和
- 简介当前很多网站直接采用第三方认证登录,例如支付宝/微信/ Github 等。goth封装了接入第三方认证的方法,并且内置实现了很多第三方认
- 使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column
- 当来自应用程序的第一个连接控制锁而第二个连接需要相冲突的锁类型时,将发生阻塞。其结果是强制第二个连接等待,而在第一个连接上阻塞。不管是来自同
- 前言在进行下面的操作前,先在数据库中新建两张数据表:(以下是创建数据表的代码)create table 学生表01(姓名 nvarchar(
- 引言:关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂。偶尔发现了这篇文章,总结得很经典,文章流量也
- 本文实例讲述了Python3.5多进程原理与用法。分享给大家供大家参考,具体如下:进程类:Process示例及代码:(1)创建函数作为单进程
- pycharm创建新文件自动添加文件头注释背景我们平时在使用pycharm发现有些大神创建一个新文件的时候会自动在文件头添加一些注释,像是有
- 调试程序的过程中,发现通过os.path.join拼接的路径出现了反斜杠directory1='/opt/apps/upgradeP