使用 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)

  }



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。