token是什么意思

更新时间:2022-12-31 22:46:37 阅读: 评论:0


2022年12月31日发(作者:胎教音乐mp3免费下载)

Token的常⽤实现⽅式

简述

通常的Token在服务器端的实现⽅式有这⼏个:

1.⽤SessionID实现Token的功能

2.⽣成Token存在数据库(关系型数据库)

3.⽣成Token存在Redis(⾮关系型数据库)

4.使⽤JsonWebToken(JWT)

下⾯分析⼀下各个存储⽅式的优缺点

Session

对于每个会话,服务器会⽣成Session保存在服务器上,⽽对应的SessionID⾃动通过HTTP头中的Set-Cookie返回保存在浏览器等客户端中,每

次请求客户端都会带上SessionID,然后服务器通过SessionID找到Session判断⽤户状态。

优点:

1.操作简单,⼀般⼩项⽬使⽤起来完全没问题

缺点:

n⽂件可能需要共享。当需要多个服务器做负载均衡时⿇烦就来了,由于Session以⽂件⽅式存储在服务器硬盘中,就会出现只有⼀个

服务器存在会话Session⽂件,⽽其他服务器没有该会话的Session⽂件的情况。

(解决该问题可以参考/wangtao_20/p/)

2.⼀些客户端不会⾃动保存和发送SessionID,如⼩程序,需要⼿动在请求头Set-Cookie中加上

⽣成Token并存在数据库(关系型数据库)

如字⾯意思,就是⼿动⽣成Token串存在数据库中,将Token返回客户端并且每次客户端请求都带上这个Token。

优点:

1.由于Token在数据库中⽽不像Session存在本地,⽅便管理与多服务器⽀持。

缺点:

1.验证效率问题。每次验证⽤户状态都要⾛数据库,增加了数据库的负担,不过在⽤户量不是特别庞⼤的情况下没问题(毕竟⼤部分⽤户请求都

要经过数据库,顺便验证⼀下问题不⼤)

⽣成Token并存在Redis(⾮关系型数据库)

也是⼿动⽣成Token,但这次是存在Redis中⽽不是关系数据库中。

优点:

1.由于Token在Redis中⽽不像Session存在本地,⽅便管理与多服务器⽀持。

2.由于Redis跑在内存中,验证效率快上很多

缺点:

的快的优点也导致了它的缺点,Redis跑在内存中,⼀旦Redis服务器崩了,此时⼀些数据就会丢失

使⽤JsonWebToken(JWT)

简单来说JWT就是通过可逆加密算法,⽣成⼀串包含⽤户、过期时间等关键信息的Token,每次请求服务器拿到这个Token解密出来就能得到⽤

户信息,从⽽判断⽤户状态。

优点:

1.⽆论哪个服务器解出来的Token信息都⼀样,⽽且不需要做任何查询数据库操作,省掉了数据库/Redis的开销

缺点:

1.⽆法主动更新Token的有效性,只要⽤户传回来的Token没有过期,服务器就会认为这个⽤户操作是有效的。⽐如⼀下这个场景:某⽤户被封

禁,此时该⽤户所有操作都应该被禁⽌,但是由于之前发给⽤户的JWTToken还没有过期,服务器仍然认为该⽤户操作合法。有⼀个解决⽅案

是维护⼀张JWT⿊名单表,只有没在表上的⽤户的JWT是有效的。但是随之⽽来⼜有⼀个问题便是这个JWT⿊名单表存在哪⾥。存在服务器,

那么⼜要搞多服务器同步。存在关系数据库,那么查数据库效率⼜低。存在Redis,则⼜回到了Token丢失问题。。

2.其实解析JWTToken也是消耗服务器CPU的

总结

个⼈意见是⼤型项⽬可以使⽤Token+Redis/Token+数据库,这个Token可以是⾃⼰⽣成,也可以是JWTToken,只不过验证还是⾛Redis/数

据库。对于要求不⾼的项⽬,Session/JWT也是可以胜任的。

本文发布于:2022-12-31 22:46:37,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/68300.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:aragon
下一篇:paste什么意思
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图