写在前面
JWT是一种基于JSON(JavaScript Object Notation)的轻量级认证和授权协议,它包含了一些声明(claims)和签名(signature),用于验证发送者身份和保护传输的信息。
JWT工作原理
- 浏览器首次登录,post携带用户名和密码请求服务器
- 服务器将用户信息生成
jwt,并返回给客户端 - 浏览器拿到
jwt之后,可以保存到cookie或者localStorage、sessionStorage中 - 浏览器下次请求接口,将
jwt放到请求头header中(默认格式Authorization: Bearer jwt) - 服务端检查
jwt的签名信息,从jwt中获取用户信息,并执行后续操作。反之,权限校验失败
JWT组成
- Header:定义加密方式和令牌类型
- { "alg": "HS256", "typ": "JWT"}
- Payload:定义需要加密的数据
- { "sub": "1234567890", "name": "John Doe", "admin": true}
- Signature:由前两部分加密组成,主要用来验证发生请求者身份
JWT实现
(1)后端:express-jwt、jsonwebtoken
(2)前端:axios拦截器、localstorage存储token