问题描述:
使用express-jwt解析token,但是却报错:jwt is not a function
原因分析:
我安装的express-jwt是7.7.5版本的,用法已经改变了。
https://www.npmjs.com/package/express-jwt
查询官方文档可知最新用法
解决方案:
1.导入
var { expressjwt:jwt } = require("express-jwt")
2.注册
app.use(jwt({
secret: 'shhhhhhared-secret', algorithms: ['HS256']
}).unless({ path:[/^\/api\//] }))
.unless({用正则指定不需要访问权限的路径})
或另一种办法,直接将唯一受保护的路径地址作为参数加在前面:
app.use("/api", jwt({
secret: "shhhhhhared-secret", algorithms: ["HS256"]
}));
3. 用户数据
解析成功后,就会将 Token 中包含的用户数据自动挂载到 req.auth 上
// 这是一个有权限的 API 接口
app.get('/admin/getinfo', function (req, res) {
// TODO_05:使用 req.auth 获取用户信息,并使用 data 属性将用户信息发送给客户端
console.log(req.auth);
res.send({
status: 200,
message: '获取用户信息成功!',
data: req.auth// 要发送给客户端的用户信息
})
})