这篇文章主要介绍了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框架会话技术的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。