Token登录验证(附图)
程序员文章站
2022-07-02 23:44:38
...
什么是Token
token是由服务器生成的一串加密后的字符串,用来作为客户端进行请求的一个标识。
用户第一次成功登录后,服务器会针对这个用户生成一个token,用来标识这个用用户,并将生成的token返回给客户端,以后客户端只需要带着token来访问即可,不需要使用账号和密码来。
通过JWT生成Token
JWT(JSON Web Token)是一种跨域认证解决方案,它规定了一种Token的实现方式。
目前多用于前后端分离项目和OAuth2.0业务场景下。
JWT是基于Token的轻量级认证模式,服务端认证通过后,会生成一个JSON对象,经过签名后得到一个Token,再发回给用户。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ1c2VySWQiOjUsInJvbGVfaWQiOiIxIiwiZXhwIjoxNjA0MzA
5NDI3LCJpc3MiOiJteS1wcm9qZWN0In0.
QS4QTa3siUY9M7mWpEU2QfSsQ2oNzTMTE6IuOJjVl4I
JWT是一个很长的字符串,中间用(.)分割成三个部分。
JWT的三个部分:
- Header(头部)Header 部分是一个 JSON 对象,描述 JWT 的元数据
- Payload(负载)Payload 部分也是一个 JSON 对象,用来存放实际需要传递的数据
- Signature(签名)Signature 部分是对前两部分的签名,防止数据篡改
注意,JWT 默认是不加密的,任何人都可以读到,所以不要把秘密信息放在Payload部分。
并将这三个JSON 对象使用 Base64URL 算法转成字符串
Token身份验证基本流程
- 用户使用账号密码请求登录
- 服务端验证账号密码
- 验证成功后,服务端会生成一个token,并将这个token返回给客户端
- 客户端收到这token后将它放在cookie或者本地存储
- 客户端再次向服务器发起请求时带上token
- 服务端收到请求,然后验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数据。
流程图
(字体潦草,见谅)
上一篇: react系列(9)混合mixins
下一篇: Flutter踩坑记