Token【JWT与传统认证流程】

462 阅读2分钟

前言:现在我们面临的一个问题就是,只要任何一个用户知道了服务端接口的地址,都可以进行访问,但是我们希望只有登陆的用户才能够访问服务端的接口,所以我们就要加上相应的认证机制,我们使用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鉴权之路】

总结:这篇文章是对上一篇文章的一点补充,加油!

水平有限,还不能写到尽善尽美,希望大家多多交流,跟春野一同进步!!!