美文网首页
Session 和 JWT 比较

Session 和 JWT 比较

作者: 魂斗驴 | 来源:发表于2021-03-24 09:10 被阅读0次

HTTP是无状态的。所有请求都是无状态的。但是,在某些情况下,我们希望记住我们的状态。例如,在一家在线商店中,当我们将香蕉放入购物车后,我们不希望我们的香蕉在转到另一页上购买苹果时消失。IE。我们希望在浏览网上商店时记住我们的购买状态!

为了克服HTTP请求的无状态本质,我们可以使用session或token。

基于session的身份验证

基于认证的session,服务器将在用户登录之后创建session,然后sessionID存储在用户的浏览器的cookie。当用户保持登录状态时,Cookie将与每个后续请求一起发送。然后,服务器可以将Cookie中存储的sessionID与内存中存储的session信息进行比较,以验证用户的身份并发送具有相应状态的响应!

基于session的身份验证流程

基于token的身份验证

许多Web应用程序使用JSON Web token(JWT)代替用于身份验证的session。在基于token的应用程序中,服务器使用机密创建JWT,并将JWT发送到客户端。客户端存储JWT(通常在本地存储中),并在每个请求的标头中都包含JWT。然后,服务器将使用来自客户端的每个请求来验证JWT并发送响应。


基于token的身份验证流程

这里最大的区别是用户状态没有存储在服务器上,而是状态存储在客户端的token内。大多数现代Web应用程序都使用JWT进行身份验证,因为他的可扩展性和移动设备身份验证。

JWT的节点模块

jsonwebtoken库可用于在服务器上创建JWTtoken。用户登录后,客户端会将JWTtoken传递回header.authorization.bearer属性。

{
  method: "GET",
  headers:{
    "Authorization": "Bearer ${JWT_TOKEN}"
  }
}

中间件[express-jwt](https://github.com/auth0/express-jwt),可用于通过比较秘密来验证JWTtoken。

可扩展性

基于session的身份验证:因为session存储在服务器的内存中,所以当大量用户一次使用系统时,扩展就成为一个问题。

基于token的身份验证:扩展没有问题,因为token存储在客户端。

多设备

基于session的身份验证: Cookie通常在单个域或子域上工作,并且如果它们跨域工作,则通常会被浏览器禁用(第三方Cookie)。当从不同的域向移动设备和Web设备提供API时,就会出现问题。

基于token的身份验证: cookie没有问题,因为请求标头中包含JWT。

在现代Web应用程序中,更推荐使用JWT的基于token的身份验证。JWT的一个缺点是与存储在cookie中的sessionID相比,JWT的大小要大得多,因为JWT包含更多的用户信息。必须注意确保JWT中仅包含必要的信息,并且应省略敏感信息以防止XSS安全攻击。

参考

Session vs Token Based Authentication

相关文章

  • Session 和 JWT 比较

    HTTP是无状态的。所有请求都是无状态的。但是,在某些情况下,我们希望记住我们的状态。例如,在一家在线商店中,当我...

  • jwt、session、oauth 异同

    1,jwt 和session机制 首先jwt 和session机制 都是用户认证的,oauth 不是 sessio...

  • 从session、cookie到token以及JWT

    从session、cookie到token以及JWT 主要讲token和jwt技术,关于session和cooki...

  • Phoenix/Elixir用户认证系统

    1. 选择Session or JWT? 关于Session和JWT的区别和联系,可以看以下两篇文章:[1] 什么...

  • 单点登录问题总结

    jwt是什么? jwt是一种session信息存储方案,单点登录和是否用jwt没关系,jwt也是和系统内的流程一致...

  • jwt在node中的应用

    什么是jwt 这个文章已经解释得很清楚了传送门 jwt和session的区别 session:一般用于服务端存储信...

  • cookie-session机制与JWT机制对比

    本文将对比讨论cookie-session与JWT下面这幅图简单地说明了cookie-session机制与JWT机...

  • JWT认证原理分析

    基于session的认证 JWT认证规则 JWT(Json Web Token) JWT原理 签发算法 校验算法 ...

  • 两种登陆验证

    JWT、session 有状态:session 需要在服务器保存 session,客户端也需要将 session ...

  • cookie和session、jwt

    domain 属性 domain标识指定了哪些主机可以访问该Cookie的域名。 cookie的domain可以访...

网友评论

      本文标题:Session 和 JWT 比较

      本文链接:https://www.haomeiwen.com/subject/vpkkcltx.html