什么是Cookie、Session、Token、JWT

发布时间:2021-10-15 13:44:59 作者:iii
来源:亿速云 阅读:139

这篇文章主要介绍“什么是Cookie、Session、Token、JWT”,在日常操作中,相信很多人在什么是Cookie、Session、Token、JWT问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是Cookie、Session、Token、JWT”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

什么是认证(Authentication)

什么是授权(Authorization)

什么是凭证(Credentials)

什么是 Cookie

cookie 重要的属性属性说明name=value键值对,设置 Cookie 的名称及相对应的值,都必须是字符串类型

什么是 Session

什么是Cookie、Session、Token、JWT

session.png

根据以上流程可知,SessionID 是连接 Cookie 和 Session 的一道桥梁,大部分系统也是根据此原理来验证用户登录状态。

Cookie 和 Session 的区别

什么是 Token(令牌)

Acesss Token

什么是Cookie、Session、Token、JWT

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2.  客户端使用用户名跟密码请求登录

  3.  服务端收到请求,去验证用户名与密码

  4.  验证成功后,服务端会签发一个 token 并把这个 token 发送给客户端

  5.  客户端收到 token 以后,会把它存储起来,比如放在 cookie 里或者 localStorage 里

  6.  客户端每次向服务端请求资源的时候需要带着服务端签发的 token

  7.  服务端收到请求,然后去验证客户端请求里面带着的 token ,如果验证成功,就向客户端返回请求的数据

Refresh Token

什么是Cookie、Session、Token、JWT

Token 和 Session 的区别

什么是 JWT

生成 JWT

jwt.io/www.jsonwebtoken.io/

JWT 的原理

什么是Cookie、Session、Token、JWT

         Authorization: Bearer复制代码

JWT 的使用方式

方式一

  当用户希望访问一个受保护的路由或者资源的时候,可以把它放在 Cookie 里面自动发送,但是这样不能跨域,所以更好的做法是放在 HTTP 请求头信息的 Authorization 字段里,使用 Bearer 模式添加 JWT。 

GET /calendar/v1/events     Host: api.example.com     Authorization: Bearer <token>

方式二

方式三

  通过 URL 传输

http://www.example.com/user?token=xxx

项目中使用 JWT

**项目地址: https://github.com/yjdjiayou/jwt-demo **

Token 和 JWT 的区别

相同:

区别:

常见的前后端鉴权方式

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2.  Session-Cookie

  3.  Token 验证(包括 JWT,SSO)

  4.  OAuth3.0(开放授权)

常见的加密算法

什么是Cookie、Session、Token、JWT

image.png

注意:

常见问题

使用 cookie 时需要考虑的问题

使用 session 时需要考虑的问题

使用 token 时需要考虑的问题

使用 JWT 时需要考虑的问题

使用加密算法时需要考虑的问题

分布式架构下 session 共享方案

1. session 复制

优点: 可容错,各个服务器间 session 能够实时响应。

缺点: 会对网络负荷造成一定压力,如果 session 量大的话可能会造成网络堵塞,拖慢服务器性能。

2. 粘性 session /IP 绑定策略

优点: 简单,不需要对 session 做任何处理。

缺点: 缺乏容错性,如果当前访问的服务器发生故障,用户被转移到第二个服务器上时,他的 session 信息都将失效。

适用场景: 发生故障对客户产生的影响较小;服务器发生故障是低概率事件。实现方式: 以 Nginx 为例,在 upstream 模块配置 ip_hash 属性即可实现粘性 session。

3. session 共享(常用)

什么是Cookie、Session、Token、JWT

4. session 持久化

优点: 服务器出现问题,session 不会丢失

缺点: 如果网站的访问量很大,把 session 存储到数据库中,会对数据库造成很大压力,还需要增加额外的开销维护数据库。

只要关闭浏览器 ,session 真的就消失了?

不对。对 session 来说,除非程序通知服务器删除一个 session,否则服务器会一直保留,程序一般都是在用户做 log off 的时候发个指令去删除 session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分 session 机制都使用会话 cookie 来保存 session id,而关闭浏览器后这个 session id 就消失了,再次连接服务器时也就无法找到原来的 session。如果服务器设置的 cookie 被保存在硬盘上,或者使用某种手段改写浏览器发出的 HTTP 请求头,把原来的 session id 发送给服务器,则再次打开浏览器仍然能够打开原来的 session。恰恰是由于关闭浏览器不会导致 session 被删除,迫使服务器为 session 设置了一个失效时间,当距离客户端上一次使用 session 的时间超过这个失效时间时,服务器就认为客户端已经停止了活动,才会把 session 删除以节省存储空间。 

到此,关于“什么是Cookie、Session、Token、JWT”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. cookie、session、token分别是什么
  2. PHP如何用JWT创建Token

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

cookie session token

上一篇:JAVASE中数据类型,变量定义及使用的示例分析

下一篇:Java设计模式面试题有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》