为什么要使用JWT

发布于 2021-12-01 18:17:39 字数 127 浏览 875 评论 14

项目中要求使用jwt,但是自己始终不明白为什么要使用jwt,我理解的jwt就是可以生成一个token,这个token可以保存一些信息,当然也可以进行验证信息,他可以代替session吗?session为什么要被他代替?我要用jwt来干什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

无人问我粥可暖 2021-12-08 15:40:42

业务无状态化指的是什么?

泛滥成性 2021-12-08 15:40:37

我觉得jwt最大的优点就是能让业务无状态化,让token作为业务请求的必须信息随着请求一并传输过来,服务端不用再去存储session信息,尤其是在分布式系统中,一来节约服务器性能,二来鉴权方便

泛泛之交 2021-12-08 15:40:29

存这么多,更改资料怎么办?多终端的情况

终遇你 2021-12-08 15:40:22

jwt生成的token每次请求要携带上,后台解析token就能获取到帐号信息,能很好解决分布式系统中常见的session不同步失效的问题,内容可以自己定义,我们用jwt里时存的是基本信息,JSON格式,只存了用户ID、用户名、昵称,因为东西越多,生成的jwt也就越长,你打开OSC的网站后按F12,在cookie里有一项叫oscid的,挺长,类似于jwt,但是OSC具体用的是什么不知道

孤独患者 2021-12-08 15:40:18

其实最重要的就是他是自包含的(self-contained)

野心澎湃 2021-12-08 15:33:22

jwt也有自己的缺点。比如我更改密码无感知,其实自己用rd来生成token也许是最安全最佳的解决方案。jwt可以携带一定的非隐私信息,但是修改密码就悲催了。

坚持沉默 2021-12-08 14:58:44

jwt主要还是用在前端调用后端接口中,来做鉴权的吧,分布式系统中session处理比较麻烦。用jwt相对来说简单一些。

眉黛浅 2021-12-08 14:28:43

有时候session中的内容是非常多的,例如一个人要登录一个管理后台,管理后台可能有一级菜单、二级菜单,等上百个菜单,用户有哪些菜单权限都要记录到session中。大小估计快有1m了。这种情况下如果用jwt,把这些信息都放到请求头中显然不合适。因为每次请求都带上这么重一个包伏也太他妈重了。如果是前台相关页面session中只会保存少量跟用户相关的信息到是可以用jwt。

好听的两个字的网名 2021-12-08 13:51:20

回复
token保存在客户端,不在后台。每次客户端向后台发送请求时,都带着token

浅沫记忆 2021-12-08 12:09:08

后台应该需要验证token的正确性吧,这个验证是否正确只需要对应的jar包就行?还有生成token得有一个时间有效期吧,这个有效期是后台的吗?

心欲静而疯不止 2021-12-08 11:50:47

回复
@韦小仇 : 我在其中一台服务器登录并且返回给客户端一个token,然后客户端现在请求另一台服务器,另一台服务器如何验证token呢?如果token正确性不涉及业务逻辑,只是根据一个字符串和时间生成的token

琴流音 2021-12-08 11:48:41

回复
你去了解下jwt就知道了

少女净妖师 2021-12-08 10:22:40

回复
@韦小仇 : 你说对,不过jwt不是需要签名的密钥来生成消息摘要吗,两个机房要是没有相同的加密密钥,那怎么验证token的正确性。

夜司空 2021-12-08 06:45:16

假设现在有一个APP,后台是分布式系统。APP的首页模块部署在杭州机房的服务器上,子页面模块部署在深圳机房的服务器上。此时你从首页登录了该APP,然后跳转到子页面模块。session在两个机房之间不能同步,用户是否需要重新登录?传统的方式(cookie+session)需要重新登录,用户体验不好。session共享(在多台物理机之间传输和复制session)方式对网络IO的压力大,延迟太长,用户体验也不好。JWT相当于将session保存在了客户端,解决了后台session复制的问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文