温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Django框架会话技术的示例分析

发布时间:2021-09-03 13:56:51 来源:亿速云 阅读:141 作者:小新 栏目:开发技术

这篇文章主要介绍了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框架会话技术的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI