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

 更新时间:2019年05月24日 11:15:37   作者:微信1257309054  
这篇文章主要介绍了Django框架会话技术,结合实例形式分析了Django框架Cookie与Session相关使用技巧与注意事项,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • Win10环境中如何实现python2和python3并存

    Win10环境中如何实现python2和python3并存

    这篇文章主要介绍了Win10环境中如何实现python2和python3并存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python中unittest用法实例

    Python中unittest用法实例

    这篇文章主要介绍了Python中unittest用法,较为详细的讲述了unittest中相关函数的用法及完整实例,需要的朋友可以参考下
    2014-09-09
  • Python OpenCV中常用图片处理函数小结

    Python OpenCV中常用图片处理函数小结

    在计算机视觉和图像处理领域,OpenCV(Open Source Computer Vision Library)是一个非常强大和流行的开源库,本文将介绍一些常用的OpenCV函数,希望对大家有所帮助
    2024-03-03
  • 刚学完怎么用Python实现定时任务,转头就跑去撩妹!

    刚学完怎么用Python实现定时任务,转头就跑去撩妹!

    朋友问我有没有定时任务的模块,并且越简单越好.刚好前今天就研究了一下定时任务模块,于是就告诉他使用方式,令我没有想到的是,这货他学会了之后,居然买了一个服务器给女朋友发消息,发消息,发消息……重要的事情说三遍,需要的朋友可以参考下
    2021-06-06
  • 如何用python反转图片,视频

    如何用python反转图片,视频

    这篇文章主要介绍了如何用python反转图片,视频,帮助大家更好的利用python处理图像,感兴趣的朋友可以了解下
    2021-04-04
  •  python中字符串的常见操作总结(二)

     python中字符串的常见操作总结(二)

    这篇文章主要介绍了python中字符串的常见操作,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • Python使用Tkinter GUI实现输入验证功能

    Python使用Tkinter GUI实现输入验证功能

    这篇文章主要介绍了Python中使用Tkinter GUI实现输入验证,文中通过一个完整示例代码给大家介绍Python Tkinter GUI输入验证功能,需要的朋友可以参考下
    2022-04-04
  • Pygame Event事件模块的详细示例

    Pygame Event事件模块的详细示例

    事件是Pygame的重要模块之一,比如鼠标点击、键盘敲击、游戏窗口移动、调整窗口大小、触发特定的情节、退出游戏等等,本文就详细的介绍一下具体用法,感兴趣的可以了解一下
    2021-11-11
  • python数据库操作--数据库使用概述

    python数据库操作--数据库使用概述

    这篇文章主要介绍了python中使用mysql数据库详细介绍,本文起讲解了安装mysql、安装MySQL-python、mysql 的基本操作、python 操作mysql数据库基础等内容,需要的朋友可以参考下
    2021-08-08
  • Django2 连接MySQL及model测试实例分析

    Django2 连接MySQL及model测试实例分析

    这篇文章主要介绍了Django2 连接MySQL及model测试,结合实例形式分析了Django2框架使用pymysql库进行mysql数据库连接与model调用测试方法,需要的朋友可以参考下
    2019-12-12

最新评论