第一步
安装jsonwebtoken
安装express-jwt
npm i jsonwebtoken express-jwt -s
第二步 封装user-jwt.js
const jwt = require('jsonwebtoken'); // 引入验证jsonwebtoken模块
const expressJwt = require('express-jwt'); // 引入express-jwt模块
const { PRIVATE_KEY } = require('./constant'); // 引入自定义的jwt密钥
// 验证token是否过期
const jwtAuth = expressJwt({
// 设置密钥
secret: PRIVATE_KEY,
// 设置为true表示校验,false表示不校验
credentialsRequired: true,
// 自定义获取token的函数
getToken: (req) => {
if (req.headers.authorization) {
return req.headers.authorization
} else if (req.query && req.query.token) {
return req.query.token
}
}
// 设置jwt认证白名单,比如/api/login登录接口不需要拦截
}).unless({
path: [
'/',
'/api/login',
'/api/register',
'/api/resetPwd'
]
})
// jwt-token解析
function decode(req) {
const token = req.get('Authorization')
return jwt.verify(token, PRIVATE_KEY);
}
module.exports = {
jwtAuth,
decode
}
第三步 在路由引入
const { jwtAuth } = require('../utils/user-jwt'); // 引入jwt认证函数
router.use(jwtAuth); // 注入认证模块