使用 jsonwebtoken模块,生成token
weixin_70777902 2024-06-29 16:03:03 阅读 73
下面有张图说明了token的生成流程和作用
下载jsonwebtoken插件
下载指令:npm i jsonwebtoken
在使用jsonwebtoken模块的文件里进行引入require
创建登录接口 ,并且生成token
let token =let token="Bearer "+jwt.sign({用户对象},口令,{expireIn:设置过期时间})
客户端接受返回的token,存储在浏览器并在请求时携带token
使用axios拦截器进行,携带token
let token = localStorage.getItem('token')
axios.interceptors.request.use(config=>{
//携带token
if(token){
config.headers.Authorization=token
}
return config
})
获取客户端传递过来的token,进行验证token的有效性
上面的token验证有些缺陷,如果这样写的话那每一个接口都要写一遍验证很麻烦
我们可以使用expressjwt在app.js文件里进行token的验证
首先也是需要下载
指令:npm i express-jwt
在app.js文件里进行导入
const {expressjwt}=require("express-jwt")
使用expressjwt验证,如果是后端跨域,一定要写在跨域后面
app.use(expressjwt({
secret:"口令",
algorithms : ["HS256"]
}).unless({//开通白条,不需要验证的接口
path:[
"/login",
"/reg",
"/upload",
{url:/^\/upload/,methods:["GET"]}
]
})
)
在全局处理错误处理中间键进行报错处理
app.use(function (err, req, res, next) {
//console.log(err.message) //invalid token jwt expired No authorization token was found
if(err){
if(err.name=="UnauthorizedError"){
res.status(401).send({
code:401,
msg:"无效token",
})
return
}
}else{
next(err)
}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。