koa-jwt

目录

Koa-jwt

什么是JWT

JWT(JSON Web Token) 是一种方便地实现服务器与客户端安全通讯的规范,是目前最流行的跨域认证解决方案。

JWT原理

在介绍 JWT 之前,先来看看如何使用 session 和 cookie 做用户验证,流程一般如下:

服务器验证客户端发送的用户名和密码后,在当前对话(session)保存用户信息相关数据并返回一个 session_id 给用户,写入用户 cookie。

之后用户的每次请求都会通过 cookie 将 session_id 传回服务器,服务器收到 session_id,找到之前保存的数据并获得用户信息 上面这种方式,session 数据共享不方便,不好实现跨域服务,如果是服务器集群,需要实现 session 共享才能让每台服务器都能够进行用户验证。

使用 JWT,服务器认证用户之后,会生成包含一个 JSON 对象信息的 token 返回给用户,如:

{
  "name": "xxx",
  "role": "admin"
}

然后客户端请求服务的时候,都要带上该 token 以供服务器做验证。服务器还会为这个 JSON 添加签名以防止用户篡改数据。通过使用 JWT,服务端不再保存 session 数据,更加容易实现扩展。

JWT 结构

JSON Web Tokens 由以点 ( .) 分隔的三部分组成。

  • Header
  • Payload
  • Signature

Therefore, a JWT typically looks like the following.

xxxxx.yyyyy.zzzzz

参考: https://jwt.io/introduction

https://www.jianshu.com/p/2552cdf35e66

https://juejin.cn/post/6881630034260393992