JWT的名词解释和使用

举报
Amrf 发表于 2018/11/14 15:52:23 2018/11/14
【摘要】 JWT(Json Web Token)是实现token技术的一种解决方案,JWT由三部分组成: header(头)、payload(载体)、signature(签名)。具体的java使用参考:https://blog.csdn.net/achenyuan/article/details/80829401https://blog.csdn.net/u012240455/article/deta...

JWT(Json Web Token)是实现token技术的一种解决方案,JWT由三部分组成: header(头)、payload(载体)、signature(签名)。

具体的java使用参考:

https://blog.csdn.net/achenyuan/article/details/80829401

https://blog.csdn.net/u012240455/article/details/79019825

我从这两篇文章里面摘两端jwt方式和session方式的对比的描述:

和Session方式存储id的差异

Session方式存储用户id的最大弊病在于要占用大量服务器内存,对于较大型应用而言可能还要保存许多的状态。一般而言,大型应用还需要借助一些KV数据库和一系列缓存机制来实现Session的存储。

而JWT方式将用户状态分散到了客户端中,可以明显减轻服务端的内存压力。除了用户id之外,还可以存储其他的和用户相关的信息,例如用户角色,用户性别等。

JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。

优点是在分布式系统中,很好地解决了单点登录问题,很容易解决了session共享的问题。 

缺点是无法作废已颁布的令牌/不易应对数据过期。

可能习惯了redis保存session,使用shiro做登陆,突然使用JWT有点不适应,因为太简单了,我个人不是很建议使用,还是那句话,你的选择权有多大,你有学多少知识。

个人总结:

jwt是挂在token上的也就是正常情况下是挂在客户端cookies里的,相对于存储于session的方式确实会大大减少服务器上的存储压力,尤其是当用户量特别大的时候;jwt的安全性依赖于加密算法(,alg指加密类型,可选值为HS256、RSA等等);

其他资料:

https://blog.csdn.net/cruise_h/article/details/50888225

https://stackoverflow.com/questions/23808460/jwt-json-web-token-library-for-java

https://github.com/jwtk/jjwt

https://github.com/auth0/java-jwt/blob/master/lib/src/main/java/com/auth0/jwt/JWT.java


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。