Cookie、Session以及Token的区别 以及身份认证 保持登录状态

Cookie、Session以及Token的区别 以及身份认证 保持登录状态

http协议是无状态的:

关闭网页再次访问服务器,服务器不知道是你再次访问

即客户端进行用户名和密码认证登录,页面关闭后,下一次用户还得再发送一次请求来进行用户认证。

1.cookie

1.1cookie:存储在浏览器的一种数据(一种数据载体)

每次HTTP请求都自动带上cookie数据给服务器

即可在cookie中存储账户和密码,来实现保持登录。

但在浏览器中可以查看保存了哪些cookie,以及cookie中的内容,因此cookie中存储用户名和密码是极为不安全的。

请添加图片描述

2.基于cookie和session 会话

2.1浏览器与服务器进行会话:

会话的开始—>浏览器访问服务器

会话的结束—>关闭浏览器(服务器设置的时间)

-------不同服务器对用户设置了结束会话的时间和唯一的Session id(一般保存在数据库)

2.2用户访问服务器的过程

请添加图片描述

1.首先将用户名和密码发送给服务器(第一次请求不会带cookie,因为服务器还没有设置cookie)

2.服务器核对,确认密码正确–>身份验证成功

3.服务器创建session对象包含session id(没有规律的字符串)、会话过期时间以及其他参数

4.服务器设置cookie 将session对象中所有参数加入到cookie中 并发送给用户

5.用户浏览器拿到cookie并且在cookie的value中进行保存

6.以后的每一次访问请求都带上cookie(以及cookie中的session信息) 并在服务器判断session id是否存在 进行验证

7.在登出以及超过设置的会话时间时候 浏览器的cookie就会被删除 需要重新登录

2.3session的优以及存在的问题

2.3.1存在的问题:

1.当大量用户在特定时间内访问服务器时,服务器会产生大量的session id存储在服务器 ,服务器压力增加。

2.当多台服务器时

请添加图片描述

请添加图片描述

优点:

1.此时的浏览器cookie是没有保存用户的用户名和密码的,所以是相对安全的.

3.JWT认证机制

2.1 jwt (jason web tooken)

2.1.1什么是jwt

主要在网络应用中传递一些小批量安全数据时使用,它是一个紧凑并且安全的token。

和普通token比较

相同点:都是可以访问资源的令牌,都可以记录用户信息,都只能在验证成功后获取信息。

不同点:服务器验证时,普通token要在数据库进行数据的查询,而jwt验证token只用在服务端使用密钥验证

2.1.2jwt的组成

由三部分组成,中间由点分开

header:头部----->生成签名的算法

payload:负载----->用户的信息

signature:签名----->将header和payload通过base64编码后进行算法(header中声明的算法)运算得到签名信息

请添加图片描述

2.2 jwt认证机制

1.用户第一次登录网页 服务器生成一个jwt(服务器不保存) 服务器保存生成jwt的签名密文

2.把jwt发送给浏览器(web应用通常使用cookie和local storage存储;app则使用app自己的存储机制存储)

3.浏览器每次发送请求都带上这个jwt

4.服务器通过hear中声明的算法结合hearder和payload进行算法运算得到签名信息与signature进行匹配认证

用app自己的存储机制存储)

3.浏览器每次发送请求都带上这个jwt

4.服务器通过hear中声明的算法结合hearder和payload进行算法运算得到签名信息与signature进行匹配认证

请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值