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 PyTorch预训练示例
Feb 11 Python
python实现图片识别汽车功能
Nov 30 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
Apr 03 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
Python中asyncio模块的深入讲解
Jun 10 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
Python 字符串池化的前提
Jul 03 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
Mar 03 Python
python playwrigh框架入门安装使用
Jul 23 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
Destoon模板制作简明教程
2014/06/20 PHP
php递归json类实例
2014/12/02 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
Python中decorator使用实例
2015/04/14 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
个人简历的自荐信
2013/10/23 职场文书
报告会主持词
2014/04/02 职场文书
计算机系本科生求职信
2014/05/31 职场文书
2014年财政所工作总结
2014/11/22 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle