JWT,cookie,session

一.什么是cookie:

Cookie是保存在客户端的纯文本文件,比如txt文件,所谓的客户端就是我们自己的本地电脑,当我们使用自己的电脑通过浏览器进行访问网页的时候,服务器就会生成一个证书并返回给我的浏览器并写入我们的本地电脑,这个证书就是cooki。

在浏览器,请求头部分生成一个文件,但是容易被别人获取,另一种解释:Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。

1.session:

服务器为了保存用户状态而创建的一个特殊的对象。        

    1.    当浏览器第一次访问服务器时,服务器创建一个session对象(该 对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId 以cookie的方式发送给浏览器。 当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据 sessionId就可以找到对应的session对象

     2.   基于cookie实现,因为是动态,所以要放在cookie文件中,所以在cookie中会生成cookie+sessionid

2.session状态保持流程:

  首次登录: 点击登录后-->发送request请求,把username和password,发送到后台 -->与数据库的数据进行对比,成功,会在服务器生成sessionid,在服务器保存sessionid-->把数据和sessionid返回到前端-->在前端进行数据展示,把sessionid保存在cookie中。

 再次登录时: 前端发送reqeust请求,把数据和cookie发送给后端-->后端取到sessionid与服务器的sessionid进行比对验证,成功对数据进行处理,完成后把sessionid和数据一起返回给前端  

3.cookie和session的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上

2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session

3.设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话

4.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。

5、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。(Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)**

二.JWT

1.什么是JWT:

 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

2.头部:

 3.载荷:

payload

  载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分

  • 标准中注册的声明

  • 公共的声明

  • 私有的声明

一般存放有效信息,数据信息,公共的声明,私有的声明,经过base64 加密,称为JWT的第二部分
        {
            "sub": '1234567890',
            "name": 'john',
            "admin":true
        }

签证:

签证(signature)这部分它是一个签证信息,它是由头部+载荷+头部里的加密方式+几位随机字符组合而成 随机字符串只由服务器知道,大大提高了安全性

token的 保持状态流程:

        第一次登录时: 在前端点击登录按钮,将username和pasword发送到后端-->后端接收到数据后进行验证,验证成功生成token值,将数据和token值返回给前端-->前端保存token
​
        第二次登录时: 将头部里的token和数据都发送到后端-->后端对token进行验证,验证成功后处理数据,返回.

token码三部分展示:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9
.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

三.JWT实现案例:

1.安装:pip install djangorestframework-jwt

2.创建表:

 3.配置setting:

 

 4.写views:

 

 5.配置urls:

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值