这是我参与「第三届青训营 - 后端场」笔记创作活动的的第三篇笔记。
1. 前言
token生成于服务端,存储在客户端,服务端不用存储,用户后面每次登录都携带首次都登录生成的token字符串用于验证,能做到这点,关键就是token使用的某种算法根据用户签名和其它一些信息生成的令牌信息是一致的,可以验证通过,对于用户量庞大的系统,或者分布式,避免了大量session对象的存储带来的内存消耗,和各服务器之间session的复制或者专门用于存储session的服务器宕机带来的问题
Session 是一种能力:是服务器见鬼说鬼话,见人说人话的能力
Token 是一个字符串凭证:和你的各种证件一样功能的凭证,JWT 恰好是其中一种格式
Cookie 是浏览器中的一个存储技术:历史很久了,不用这个也可以
以上连起来就是,你从自己的小钱包(Cookie) 里掏出了身份证(Token),递给了窗口(服务器)里面,从而达成了一种Session 能力
2. 抖音项目实践
下面我将浅说一下抖音项目中token鉴权的过程,主要分为token创建和token验证两个过程,这里使用的是jwt。具体jwt是什么见底部链接。
2.1 token创建方式
2.1.1 注册
1、前端输入账户密码,经过违规验证后,后端数据库进行账户创建
2、创建成功之后进行jwt的生成,存在服务端,一般是存在header中,但这次的抖音项目是前端自动提取放在了请求的param中
3、完成注册
2.1.2 登录
1、前端输入账户密码,后端数据库进行账户验证
2、验证成功之后进行jwt的生成,后续过程和注册的2相同
3、完成登录
2.2 token验证方式
我们可以使用jwt中间件,也可以针对每一个请求做定制化处理,但是基于工程化的思想,建议还是择优选择中间件的方式。
2.2.1 获得用户信息
1、先从url中获取token的值
2、解析token的值,返回jwt中的claims,即jwt中的信息部分(可以使用中间件)
3、提取信息部分进行后续的逻辑处理
外链:
jwt介绍www.jianshu.com/p/576dbf44b…