Django中Cookie搭配Session使用实践

编辑: admin 分类: python 发布时间: 2021-12-04 来源:互联网
目录
  • Cookie的作用
  • Cookie登录的实现过程
  • Cookie的安全隐患
  • Session的引进
  • Session的启用
  • Session的使用
  •  Session搭配Cookie使用

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

【来源:美国cn2服务器 转载请说明出处】