首页 > 其他分享 >为什么要用JWT,JWT与Seeion区别

为什么要用JWT,JWT与Seeion区别

时间:2023-11-16 20:13:38浏览次数:26  
标签:要用 Seeion JWT 保存 SessionId Session 服务端 客户端

一、为什么使用JWT

HTTP是无状态的,开发人员需要基于HTTP来模拟实现状态的保存。经典的实现用户登录的做法是用Session,用户登录验证成功后,服务端生成SessionId。服务端会将SessionId与登录的用户信息的对应关系保存在服务器内存中,同时将SessionId返回给浏览器端,sessionId一般存储在浏览器Cokiee中,浏览器端的每次请求都携带SessionId,服务端可以通过SessionId从服务器的内存中取到用户信息,这就实现了用户登录功能。对于分布式集群环境,Session数据一般保存到所有集群实例都能访问的状态服务器上,如Redis、Memcached、关系数据库等。
但是,在分布式环境下,特别是在“前后端分离、多客户端”时代,Session暴露出很多问题。

1. 如果session数据存储到内存中,当登录用户量很大的时候,Session数据就会占用非常多的内存,且无法支持分布式集群环境。
2. 如果Session数据保存到Redis等状态服务器中,它可以支持分布式集群环境,但是没遇到一次客户端请求都要向状态服务器获取一次sessions数据,会导致请求的响应速度变慢。

二、JWT是什么

JWT全称是JSON Web Token,JWT是使用json格式来保存令牌信息的。JWT是将登录信息保存到客户端(解决了以上session暴露出的问题),为防止数据造假,保存在客户端的令牌经过了签名处理,签名的密钥只有服务端知道。每次服务端接收到客户端提交的令牌的时候都会检查一下签名,检查签名通过,对令牌进行解码,服务端从而知道当前登录信息,若发现数据被篡改,则拒绝接受客户端提交的令牌。
JWT分为头部header、负载payload、签名sinature三部分。header保存加密算法的说明,payload保存的是用户基本信息,signature是根据header和payload一起算出来的值。

标签:要用,Seeion,JWT,保存,SessionId,Session,服务端,客户端
From: https://www.cnblogs.com/lixiang1998/p/17835727.html

相关文章

  • typeof 主要用于检测基本数据类型,对于引用类型不大适用(因为所有引用类型的值都是 Obje
    下面哪些语句可以在JS里判断一个对象是否为String类型?AoStringObjectinstanceofStringBtypeofoStringObject=='string'CoStringObjectisStringD以上答案都不正确正确答案:AJS中值的类型分为原始值类型和对象类型。原始值类型包括number,string,boolean,nul......
  • SpringCloud系列八之微服务网关安全认证-JWT篇
    Gateway-JWT认证鉴权流程一、网关认证件鉴权流程目前主流的结合微服务网关及JWT令牌开发用户认证及服务访问鉴权的流程如下:用户认证流程:用户向网关发送登录认证请求,网关将请求转发给认证服务。认证服务校验用户登录信息(用户密码、短信及图片验证码)等信息之后,如果校验成功颁发一......
  • 使用JWT、拦截器与ThreadLocal实现在任意位置获取Token中的信息,并结合自定义注解实现
    1.简介1.1JWTJWT,即JSONWebToken,是一种用于在网络上传递声明的开放标准(RFC7519)。JWT可以在用户和服务器之间传递安全可靠的信息,通常用于身份验证和信息交换。声明(Claims):JWT包含一组称为声明的信息,声明描述了一些数据。有三种类型的声明:注册声明(RegisteredClaims):这是......
  • concat()返回一个新的数组,还需要用新数组替换原数组才能实现视图的更新。
    在Vue中,下列哪个选项对数组的操作不会触发视图的更新()Apush()Bshift()Cconcat()Dreverse()正确答案:Cconcat()返回一个新的数组,还需要用新数组替换原数组才能实现视图的更新。七个改变原数组且会让vue监听到的方法。push()在末尾添加一个pop()在末尾删除一个shift(......
  • JWT浅了解
    JWT通过数字签名的方式(让我想起了软考),以json对象为载体,在不同的服务终端之间安全传输信息是一种授权认证生成token的原理:通过header的加密方式,对payload进行加密。然后把header和payload再次加密生成signature贴一下我的settokenreturnJWT.create().withAudience(userId)//......
  • identityserver,OAuth2.0,JWT之间的关系
    OAuth2.0是一种授权框架,用于应用程序之间安全的共享用户资源,它允许用户授权第三方应用程序访问他们的资源,列如照片,视频,联系人列表等,而不必将用户名和密码提供给第三方应用程序,OAuth2.0通过令牌来代表用户授权,这些令牌可以被第三方应用程序用于访问用户资源,而不必知道用户的凭据。O......
  • class是js关键字,jsx中要用className
    下面的JSX代码中,哪一个无法达到预期的效果?AHelloWorldBC{msg}DLeoEF正确答案:C选cclass是js关键字,这里要用className。对于E选项,在jsx中直接写行内样式时不能采用引号,而是style={{color:'red'}}的方式选择C,在jsx里面,要把class换成className才能正确编译,表......
  • 为什么要用数据中台
     数据中台的出现是为了应对企业数据整合、标准化管理以及提高企业高效稳定处理数据而应用而生的。在如今大数据时代,数据成为了企业的核心战略,能给企业带来极大的商业价值与竞争优势。所以数据中台的作用也就凸显。数聚就从数据中台对企业巨大的作用开始阐述,为什么企业要用数据中......
  • .Net Core之JWT授权
    一、什么是JWT文章参考:https://www.leo96.com/article/detail/55JSONWeb令牌(JWT)是一个开放标准(RFC7519),它定义 了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为JSON对象。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用秘密(使用HMAC算法)或使用RSA或EC......
  • Jwt生成token详解
     publicStringcreateTokenByBao(StringuserId){Datedate=newDate();Stringtoken=Jwts.builder()//创建一个JWT构建器,用于创建和配置JWT。.setSubject(userId)//主题--生成token所需内容设置.setIssuedAt(date)//签发时间......