前言:现在我们面临的一个问题就是,只要任何一个用户知道了服务端接口的地址,都可以进行访问,但是我们希望只有登陆的用户才能够访问服务端的接口,所以我们就要加上相应的认证机制,我们使用JWT。
传统认证流程
1.用户向服务器发送用户名和密码。
2.服务器验证通过后,在当前对话(session)里保存相关数据,比如用户角色、登陆时间等等。
3.服务器向用户返回一个session_id,写入用户的cookie。
4.用户之后的每一次请求都会携带cookie中的session_id。
5.服务器查看客户端传过来的session_id,找到前期保存的数据,由此得知用户的身份。
问题
如果用户过多,我们增加了一台服务器(服务器B),这样的话用户的访问服务器是不相同的。
优点:服务器承担压力变小,运行请求更快。
问题来了:
我们假设一个场景,我登陆在服务器A,所以他的身份信息都存在服务器A的内存中,过了一会服务器A的空间很挤了,我发出的接口请求就会自动会发送到服务器B上,但是服务器B没有我登陆的用户标识,拿到session_id去自己内存中找,找不到,咋整?
答:再有一台服务器,专门存储session信息,使不管那台服务请求接口,我们统一去session服务器验证。
以上的流程会增加程序员不必要的工作量,所以我们使用JWT,详情请见Koa2 + Vue【JWT鉴权之路】。
总结:这篇文章是对上一篇文章的一点补充,加油!
水平有限,还不能写到尽善尽美,希望大家多多交流,跟春野一同进步!!!