sExpress使用JWT
JWT属于token机制的一种
安装JWT
sh
npm i jsonwebtoken express-jwt
npm i jsonwebtoken express-jwt
jsonwebtoken
用于生成JWT字符串express-jwt
用于将JWT字符串解析还原成JSON对象
导入JWT相关包
js
const jwt = require('jsonwebtoken')
const expressJWT = require('express-jwt')
const jwt = require('jsonwebtoken')
const expressJWT = require('express-jwt')
定义secret密钥
为了保证JWT字符串的安全性,防止JWT字符串在网络传输过程中被别人破解,我们需要专门定义一个用于加密和解密的secret密钥:
- 当生成JWT字符串的时候,需要使用secret密钥对用户的信息进行加密,最终得到加密好的JWT字符串
- 当把JWT字符串解析还原成JSON对象的时候,需要使用secret密钥进行解密
js
// secretKey 密钥的本质就是一个字符串
const secretKet = "zhuzhuxia"
// secretKey 密钥的本质就是一个字符串
const secretKet = "zhuzhuxia"
生成JWT字符串
调用jsonwebtoken
包提供的sign()
方法,将用户的信息加密成JWT字符串,发送给客户端:
- 参数一,用户的信息对象
- 参数二,加密的密钥
- 参数三,配置对象,可以配置当前token的有效期
js
jwt.sign({ username: userinfo.username }, secretKet, { expiresIn: "30s" })
jwt.sign({ username: userinfo.username }, secretKet, { expiresIn: "30s" })
JWT还原成JSON
客户端每次在访问那些有权限的接口的时候,都需要主动通过请求头
中的Authorization
字段,将Token字符串发送到服务器进行身份验证
此时,服务器可以通过express-jwt这个中间件,自动将客户端发送过来的Token解析还原成JSON对象