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的lambda匿名函数的简单介绍
Apr 25 Python
python读写ini文件示例(python读写文件)
Mar 25 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
利用python求解物理学中的双弹簧质能系统详解
Sep 29 Python
对python中的for循环和range内置函数详解
Apr 17 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
python实现最大优先队列
Aug 29 Python
python小白切忌乱用表达式
May 29 Python
python 监控logcat关键字功能
Sep 04 Python
Python __slots__的使用方法
Nov 15 Python
python四种出行路线规划的实现
Jun 23 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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
php的header和asp中的redirect比较
2006/10/09 PHP
php生成验证码函数
2015/10/20 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
javascript date格式化示例
2013/09/25 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
Nuxt配合Node在实际生产中的应用详解
2018/08/07 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
微信运维交互机器人的示例代码
2018/11/12 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[05:24]TI9采访——教练
2019/08/24 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
在Python中使用dict和set方法的教程
2015/04/27 Python
Python实现简易Web爬虫详解
2018/01/03 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
python实现无边框进度条的实例代码
2020/12/30 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
公司门卫的岗位职责
2014/02/19 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
企业员工集体活动方案
2014/08/17 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
高考学习决心书
2015/02/04 职场文书
雷锋观后感
2015/06/10 职场文书
大学生入党自传2015
2015/06/26 职场文书
解析在浏览器地址栏输入一个URL后发生了什么
2021/06/21 Servers
MySQL的索引你了解吗
2022/03/13 MySQL
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技