Django框架会话技术实例分析【Cookie与Session】


Posted in Python onMay 24, 2019

本文实例讲述了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
    • sha
    • md5
    • 用来验证数据完整性(不被篡改)
      • 哪怕【消息原文】被改动一丁点,【篡改版消息生成的消息摘要】都会与【原始消息所生成的消息摘要】的大相径庭
    • 统一输出
      • 输出默认都是128位二进制数
      • 32位16进制数
    • 单向不可逆

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程序设计有所帮助。

Python 相关文章推荐
解析Python中while true的使用
Oct 13 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
python Celery定时任务的示例
Mar 13 Python
解读python logging模块的使用方法
Apr 17 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
使用scrapy实现增量式爬取方式
Jun 21 Python
Django框架中间件(Middleware)用法实例分析
May 24 #Python
python与字符编码问题
May 24 #Python
Python读取stdin方法实例
May 24 #Python
python实践项目之监控当前联网状态详情
May 23 #Python
了解不常见但是实用的Python技巧
May 23 #Python
python远程邮件控制电脑升级版
May 23 #Python
python操作日志的封装方法(两种方法)
May 23 #Python
You might like
基于simple_html_dom的使用小结
2013/07/01 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
PHP中Array相关函数简介
2016/07/03 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
php生成与读取excel文件
2016/10/14 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
网上书店创业计划书
2014/01/12 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
师德师风剖析材料
2014/09/30 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
生日祝酒词大全
2015/08/10 职场文书
创业计划书之服装
2019/10/07 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技