第八章:会话技术

第一节:会话技术概述与用户状态准备

会话技术概述

会话,指的是浏览器访问服务器端,发送多次请求,接受多次响应。直到有一方断开连接。会话结束。简单地说,会话过程就是指从打开浏览器到关闭浏览器的过程。
大家都知道,http是短连接、无状态的协议,请求后就断开了。客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,非常不方便。例如:用户登录是一个请求,添加商品到购物车又是一个请求,但因为请求会断开的关系,添加商品时就不知道用户是谁。
因此,会话技术的作用,便是解决短连接无法保存用户状态的问题,延长请求的生命周期

会话技术大致可分为三种:Cookie、Session、Token
Cookie —— 客户端会话技术。数据存储在客户端
Session —— 服务端会话技术。Session依赖于Cookie,将Session在数据中的Session_key,当作SessionID,存在Cookie中。另外Session数据存储在数据库中,并且做了基本的数据安全处理(base64编码)
Token —— 服务端会话技术。相当于手动实现在Session,Token也依赖于Cookie

用户状态准备

1、搭建用户管理工程
  • 搭建项目和子应用
  • 定义用户管理的路由
    例:
    在这里插入图片描述
2、注册页面实现
  • 创建 register.html,定义注册表单
    在这里插入图片描述
  • 创建数据模型
    在这里插入图片描述
  • 执行数据迁移
python manage.py makemigrations
python manage.py migrate
  • 定义路由及路由函数
    在这里插入图片描述
3、登陆页面实现
  • 1、创建 mylogin.html,定义登录表单
    在这里插入图片描述
  • 2、定义路由及路由函数
    在这里插入图片描述

第二节:使用Cookie保存用户状态

Cookie常用API参考表

用途API
客户端保存cookieresponse.set_cookie("uname", username)
定义保存时间(s)response.set_cookie("uname", username, max_age=30)
定义过期时间response.set_cookie("uname", username, expires=timedelta(minutes=1))
把信息从cookie拿出来uname = request.COOKIES.get('uname',None)
把信息从cookie删除response.delete_cookie("uname")

PS:操作客户端唯有通过Response对象;方法无非get,set,delete

登录时保存Cookie

在这里插入图片描述
在这里插入图片描述

查看用户中心时,使用Cookie

在这里插入图片描述

登出时,删除Cookie

在这里插入图片描述

第三节:使用Session保存用户状态

Session常用API参考表

用途API
拿取sessonuname = request.session.get('uname')
request.session['uname'] = username
同时清除cookie 和 sessionrequest.session.flush()
删除sessondel request.session['uname']

PS:session是存在于服务端本地的,而Request的COOKIE当中存有sessionid,因此通过Request对象去关联用户的session;方法无非get,set,del,flush

登录时保存Session

在这里插入图片描述
在这里插入图片描述

查看用户中心时,使用Session

在这里插入图片描述

登出时,删除Session

在这里插入图片描述

第四节:使用token保存用户状态与UUID

什么是UUID

UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息.UUID是在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。因为构成UUID数,是由生成绝不雷同的纳秒级时间、mac地址、机器编码、随机数等构成。因此安全性能非常高。
UUID可分为UUID1~5()

token常用API参考表

用途API
拿取tokenresponse.set_cookie("utoken", token)
utoken = request.COOKIES.get("utoken")

登录时保存Session

1、自定义一个token存储位置(例如存在用户表中)
  • 1)定义表字段
    在这里插入图片描述
  • 2)执行数据迁移
python manage.py makemigrations
python manage.py migrate
2、创建token,并使用uuid

在这里插入图片描述
在这里插入图片描述

查看用户中心时,使用token

在这里插入图片描述

登出时,删除token

在这里插入图片描述

第五节:使用md5消息摘要保障数据安全

md5消息摘要

1、什么是md5消息摘要

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
 
【作用】又叫指纹或数字签名,保证数据完整性
 
【作用要点】
1、用来验证数据完整性(不被篡改)
      哪怕【消息原文】被改动一丁点,【篡改版消息生成的消息摘要】都会与【原始消息所生成的消息摘要】的大相径庭
2、统一输出
      输出默认都是128位二进制数;32位16进制数
3、单向不可逆
      可用原消息(内容)生成md5,但不能由md5反向生成原消息(内容)

 
当然,除了md5还有更加安全的算法,例如sha ,就比md5更为复杂

2、生成消息摘要参考

在这里插入图片描述

密码摘要化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

md5逆向解密

虽然md5的安全性非常高,但也并不是完全100%的安全,网络上仍然存在相关的逆向解密网址。
例:
【相关网址】http://pmd5.com/
在这里插入图片描述
虽说网上号称可逆向解密,但也是是解开最常见、最有规律、最偶然的一些md5摘要,而且是通过大量数据测试得到的结果,相当于钻了md5的空子而已,目前MD5的安全性还是超级无敌高的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值