JWT身份验证扩展包(支持tp5.1和6.0)
深入理解token
很多人可能会想到用户名和密码验证通过后,可以使用SESSION和COOKIE机制保持会话,服务端通过客户端请求时的COOKIE匹配服务端存储的SESSION会话数据,以此确认用户身份和状态;
但随着用户人数的增长,以及网络攻击手段的升级,会话机制也变得越来越脆弱;
在分布式环境中,为了保持会话状态,我们不得不将多台服务器间的会话进行互备:
此时,聪明的同学可能会想到将会话Session集中存储或缓存起来:
这个方案无疑非常好的解决了会话同步带来的问题,但也埋下了单点故障的风险:如果SESSION存储服务器发生故障,将导致所有人登录失败,这是无法接受的。
为了解决新的单点问题,我们又不得不将Session服务器进行集群,带来了更大的工作量和复杂性。这对于人力和物力也是一笔不小的投入。
上面的问题都源于需要在服务端保持会话状态导致的。那有没有一种,不需要在服务端存储会话就能进行身份认证的方法?
这个时候,TOKEN令牌就应运而生了。
TOKEN是由服务端生成,数据采用服务端密钥签名,最终保存在客户端从而释放服务端资源并解决问题。
由于不知道服务端密钥,难以伪造令牌和篡改数据。
值得注意的是,COOKIE和TOKEN中的数据都是明文保存,不能保存密码等敏感信息。