文章目录
第一节:会话技术概述与用户状态准备
会话技术概述
会话,指的是浏览器访问服务器端,发送多次请求,接受多次响应。直到有一方断开连接。会话结束。简单地说,会话过程就是指从打开浏览器到关闭浏览器的过程。
大家都知道,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 |
---|---|
客户端保存cookie | response.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 |
---|---|
拿取sesson | uname = request.session.get('uname') |
request.session['uname'] = username | |
同时清除cookie 和 session | request.session.flush() |
删除sesson | del 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 |
---|---|
拿取token | response.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的安全性还是超级无敌高的。