JWT 学习笔记

97 阅读2分钟

JWT 全称是 JSON Web Token,官网地址:jwt.io/

JWT身份认证的基本流程

  1. 客户端使用用户名和密码请求登录;
  2. 服务端收到请求,验证用户名和密码;
  3. 验证成功后,服务端会签发一个 token,再把这个 token 返回给客户端;
  4. 客户端收到 token 后可以把它存储起来,比如放在 cookie 里或者 localStorage 里;
  5. 客户端每次向服务端请求资源时需要携带服务端签发的 token,可以在 cookie、localStorage 或者 header 中携带;
  6. 服务端收到请求,然后去验证客户端请求里面带着的 token,如果验证成功,就向客户端返回请求数据。

jwt的作用

1.支持跨域访问:我们知道 cookie 是无法跨域的,而 token 没有用到 cookie,很好的解决了跨域问题;

2.无状态:token 机制在服务端不需要存储 session 信息,因为 token 自身包含了所有登录用户的信息,所以可以减轻服务端压力;

3.更适用CDN:可以通过内容分发网络请求服务端的所有资料;

4.移动端友好:当客户端是非浏览器平台时,cookie 是不被支持的,此时采用 token 认证方式会简单很多;

5.无需考虑CSRF:由于不再依赖 cookie,所以采用 token 认证方式不会发生 CSRF,所以也就无需考虑 CSRF 的防御;

6.友好的单点登录

常在使用 JWT 的时候会设置 access_token 和 refresh_token 两个 token,access_token 有效期较短,refresh_token 有效期较长,当 access_token 过期之后,如果 refresh_token 没有过期则可以换取新的 access_token。

关于 Access Token 和 Refresh Token 补充

Access Token 即“访问令牌”,是客户端向资源服务器换取资源的凭证; Refresh Token 即“刷新令牌”,是客户端向认证服务器换取 Access Token 的凭证。

什么情况下使用 JWT 比较适合?

  1. 授权