Django中Cookie搭配Session使用实践

 更新时间:2021年09月18日 11:39:11   作者:ProgramNotes  
session和cookie功能差不多,同样是用来记录用户信息和维持会话状态的,但是session是依赖cookie的,本文主要介绍了Django中Cookie搭配Session使用实践,感兴趣的可以了解一下

Cookie的作用

前面我们说道Django实战006:Cookie设置及跨域问题处理,Cookie可以在浏览器端保存用户数据,当用户访问服务器时会提交Cookie给服务器,Cookie附加了当前状态, 服务器可以通过Cookie来标识用户的登录状态,起到简单的用户身份识别和用户信息记录等作用。

Cookie登录的实现过程

1.用户通过form表单提交自己的用户名和密码,这通常是一个POST的 HTTP请求。

2.服务器拿到用户的信息开始验证用户名与密码,如果与数据库匹配成功我们就返回200同时设置一个Set-Cookie抛给浏览器,通过为‘键'=‘值'形式 。

3.浏览器接收到服务器响应返回的数据和Cookie,然后将Cookie存起来,在开发者application中可以查看到。

4.浏览器再次发送请求时,将设置了‘键'=‘值'的Cookie再次抛给服务器,服务器通过Cookie的字段判断用户已经登录,则根据需求处理用户请求,否则返回400提示用户先登录。

Cookie的安全隐患

这就是Cookie的实现过程,这里有个很明显的问题就是服务器只要识别到正确的Cookie就会处理对应的数据,那么有心人只要想办法截获(很多HTTP客户端软件都可以发送任意的HTTP请求)你的Cookie就可以冒充用户来访问该服务器并获取到用户的所有信息,这对用户来说会存在着极大的安全隐患。

Session的引进

session和cookie功能差不多,同样是用来记录用户信息和维持会话状态的,但是session是依赖cookie的。session不同在于将用户数据存储在服务器端(用户拿到session内的具体内容),Cookie则是将数据存储在浏览器端,所以相对cookie来说,session相对安全多了,我们只需要在设置Cookie时附带上session的id,当用户再次访问服务器时将session的id抛给服务器进行效验。

Session的启用

Django中使用session很简单,Django封装了session模块,默认在我们创建项目的时候就已经启用了,在数据库中可以找到一个名为django_session的数据库表,这个就是用来存放session数据的。

Session的使用

设置保存session数据,通过reques.session['键']='值'的方式来设置指定存储的session信息,通过浏览器访问该视图就可以将session设置的信息以base64编码存入到django_session数据库表中。

读取session数据,同样很简单通过request.session.get('键')来获取对应的值,通过该方法可以从django_session数据库表中读取到对应键的值。

 Session搭配Cookie使用

在cookie中传入sessionid作为前端的存储值,这里为了保证sessionid的唯一性,我最简单的方法是用uuid来生成随机字符串,再在sessionid中设置session值,再给set_cookie设置个过期时间,这样只要时间一到又会重新生成一个新的sessionid来(如果你觉得uuid4()还是会出现重复也可以自行定义)。

在浏览器端看到的就是一串随机的字符串,当用户访问服务器时cookie会把sessionid抛给服务器,服务器验证sessionid对应的值是否为django_session数据库表中读取到对应键的值,如果是则执行数据请求操作,否则返回400,告诉前端操作失败。

到此这篇关于Django中Cookie搭配Session使用实践的文章就介绍到这了,更多相关Django Cookie搭配Session内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python入门教程(二十六)Python的模块

    Python入门教程(二十六)Python的模块

    这篇文章主要介绍了Python入门教程(二十六)Python的模块,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04
  • python发送邮件的实例代码(支持html、图片、附件)

    python发送邮件的实例代码(支持html、图片、附件)

    python发送邮件的一些例子,有需要的朋友可以参考下
    2013-03-03
  • 基于python+pandoc实现html批量转word

    基于python+pandoc实现html批量转word

    pandoc是一个强大的文档格式转换工具,支持丰富的格式转换,并尽可能的保留原来的排版,号称文档格式转换的瑞士军刀,本文将给大家介绍一下使用python搭配pandoc实现html批量转word,感兴趣的朋友可以参考阅读下
    2023-09-09
  • Python Base64编码和解码操作

    Python Base64编码和解码操作

    Base64 就是一种基于64个可打印字符来表示二进制数据的方法,这篇文章主要介绍了Python Base64编码和解码,需要的朋友可以参考下
    2022-12-12
  • Python跑循环时内存泄露的解决方法

    Python跑循环时内存泄露的解决方法

    这篇文章主要介绍了Python跑循环时内存泄露的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • python 正则表达式参数替换实例详解

    python 正则表达式参数替换实例详解

    这篇文章主要介绍了python 正则表达式参数替换,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Python本地及虚拟解释器配置过程解析

    Python本地及虚拟解释器配置过程解析

    这篇文章主要介绍了Python本地及虚拟解释器配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 基于Python制作一个图片色卡提取器

    基于Python制作一个图片色卡提取器

    在一些特殊的业务场景中,我们需要一次性提取一张图片中的色卡信息,并且需要使用十六进制的颜色表示方法进行展示。本文就来用Python做个图片色卡提取器,感兴趣的可以尝试一下
    2022-12-12
  • 使用python数据清洗代码实例

    使用python数据清洗代码实例

    这篇文章主要介绍了使用python数据清洗代码实例,分享一下近期用python做数据清洗汇总的相关代码,这里我们用到的python包有pandas、numpy、os等,需要的朋友可以参考下
    2023-07-07
  • Python线性点运算数字图像处理示例详解

    Python线性点运算数字图像处理示例详解

    这篇文章主要为大家介绍了数字图像处理基本运算如何用Python详细点运算来处理数字图像有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09

最新评论