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
猜你喜欢
- 在项目中,尤其是pc端的时候,我们在用户登录后会给前端返回一个标识,来判断用户是否登录,这个标识大多数都是用户的id  
- spyder快捷键与python符号化输出spyder快捷键1、F5执行当前文件2、F9执行选中的部分3、Tab预加载以该字母为首的变量名例
- Python包导入报错的问题首先,一般来说,写一个小demo可能一个文件就够了,但是要是做一个小项目,可能需要拆分成很多零散的文件,放在不同
- 首先 你要有个女朋友效果:需要安装几个包pip install wxpypip install wechat_senderpip insta
- 本文实例为大家分享了JS实现拖动模糊框特效的具体代码,供大家参考,具体内容如下需求:在图片上拖动按钮,图片蒙层慢慢覆盖,当蒙层边缘碰到左右下
- 二值图像的凸壳指的是包围输入二值图像白色区域的最小的凸多边形的像素集合。skimage中的函数from skimage.morphology
- 在进行matplotlib画图的时候,经常会出现这个的报错,虽然知道是因为没有对应的字体的原因,但是,将字体下载后放到目标路径下,仍然没有办
- 在对浏览器兼容性要求越来越高的时候,大家是否正在寻找一个完整的解决方案呢?继《[原]最新CSS兼容方案》之后,更新的CSS hack出炉啦,
- 1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Se
- 本文实例总结了PHP图像处理技术。分享给大家供大家参考,具体如下:1、绘图场景: 验证码、图像水印、图像压缩处理php绘图坐标体系是从0,0
- 很多的网站都有记数器,用来记录网站的访问量,这给网站管理员即时了解本网站的运行及访问情况提供了很多的方便。笔者研究过很多用ASP编写的计数器
- 什么是粘包问题最近在使用Golang编写Socket层,发现有时候接收端会一次读到多个数据包的问题。于是通过查阅资料,发现这个就是传说中的T
- 一、为什么难 秒杀系统难做的原因:库存只有一份,所有人会在集中的时间读和写这些数据。例如小米手
- 本文实例讲述了python函数局部变量用法。分享给大家供大家参考。具体分析如下:当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其
- 一.使用DOM生成和读取XML文件 实例一: <?php //Creates XML string and XML document
- 在“按需加载”的需求中,我们经常会判断当脚本加载完成时,返回一个回调函数,那如何去判断脚本的加载完成呢?我们可以对加载的 JS 对象使用 o
- 假设我们有一个很简单的OTU表:现在对这个表格进行遍历,一般写法为:import pandas as pdotu = pd.read_csv
- server:#coding=utf-8from BaseHTTPServer import BaseHTTPRequestHandleri
- 摘要: 本文由简到繁地介绍了以jQuery作为蓝本的js框架开发步聚, 希望借助本文大家对jQuery这样的框架内部有一个大致的认识。推荐:
- 1、Tkinter是什么Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口&