广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Django中Cookie搭配Session使用实践
  • 862
分享到

Django中Cookie搭配Session使用实践

2024-04-02 19:04:59 862人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录Cookie的作用Cookie登录的实现过程Cookie的安全隐患Session的引进Session的启用Session的使用 Session搭配Cookie使用Coo

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内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Django中Cookie搭配Session使用实践

本文链接: https://www.lsjlt.com/news/136170.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作