文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Django中Cookie搭配Session使用实践

2024-04-02 19:55

关注

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯