在学习node中时使用的express-jwt 6.0.0以上版本出现的问题
package.json文件
{
"dependencies": {
"cors": "^2.8.5",
"express": "^4.17.0",
"express-jwt": "^7.7.5",
"express-session": "^1.17.3",
"jsonwebtoken": "^8.5.1",
"mysql": "^2.18.1"
}
}
创建的test.js文件代码
const express = require('express')
const app = express()
const jwt = require("jsonwebtoken") // 导入jwt
const { expressjwt } = require("express-jwt"); //从express-jwt中解构
const port = 3000
const secretKEY = "lyc12138" //密钥
app.use(expressjwt({ secret:secretKEY,algorithms: ["HS256"]}).unless({path:[/^\/api\//] })) //使用express-jwt这个中间件 排除路径为api/login
app.post("/api/login",(req,res)=>{
// 获得token
const token = jwt.sign({username :"lyc"},secretKEY,{expiresIn:"60s"})
res.send({
status:200,
msg:"success",
token
})
})
app.get("/api/protected",(req, res)=> {
// 即可在非排除路径下获得解密后的用户信息 通过req.auth 获取。相当于 express—jwt 6.X版本下的req.user
console.log('req',req.auth)
res.send({
status:200,
message:'获取用户信息成功',
data:req.auth
})
}
);
// 捕获错误的路由需要放在所有路由的后面
app.use((err, req, res, next)=> {
if(err.name == "UnauthorizedError"){
res.status(401).send("无效的token...");
}else {
next(err);
}
});
app.listen(port, () => console.log(`Example app listening on port http://127.0.0.1:${port}!`))
存在的问题:通过postman进行解析时req.auth时,获取不到,用户信息,有知道原因的大佬,帮忙指点下,小弟不胜感激
版权声明:本文为weixin_46231779原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。