node+express+微信小程序实现JWT认证

本篇宗旨是实打实尽量教会读者去做,所有不讲太多原理,只讲怎么做,同时也是个人学习记录

一、node代码生成token部分

1、安装相关依赖

npm i express-jwt
npm i jsonwebtoken

2、相关文件引入(在自己项目需要的地方引入)

const jwt = require("jsonwebtoken");
const {expressjwt} = require("express-jwt");

3、生成token,并且由接口返回前端

一、先定义一个密钥:

const theKey = "mykey"; //定义密匙

这里可以随便你想怎么定义

二、保存相关信息生成token

 let token = jwt.sign({ username: params_send.username }, theKey, {expiresIn: "6000s",});

这是直接用了jwt的sign方法,感兴趣的可以深入,这样写就能够生成token了,然后在相关的方法去返回

router.post("/getAuthorizationLogin", (req, respons) => {
  allway.authorizationLogin(req).then((res) => {
    respons.send({
      code: 1,
      status: 200,
      messages: "登陆成功",
      token: res,
    });
  })
    .catch((err) => {
      console.log('这是错误得', err);
    })
});

二、前端接受token部分(用的微信小程序做列子)

当接口请求通过后,把token存入缓存中,然后在请求方法中的请求头中添加token

一、请求头设置

不知道怎么设置请求头的小伙伴得自行百度了

 const token_type = "Bearer"
 let header = {
        'content-type': 'application/x-www-form-urlencoded', // 默认值
        Authorization: token_type + ' ' + wx.getStorageSync('token')
    }

可看出token是放在请求头中的Authorization中,保证我们每个请求头中都带有Authorization

2、请求头加入请求中

   wx.request({
            url: '',
            method: '',
            data: data,
            header: header,
            dataType: 'json',
            responseType: 'text',
            success: (res) => {},
            fail: (res) => {}
        })

这样前端就实现了发送token

三、node代码接受验证token

在第一步的时候安装了express-jwt,它就是用来解析传入的token的,这里只讲怎么写

在node运行的js文件中 (这里我自己的叫做index.js),引入文件、注册中间件

const {expressjwt} = require("express-jwt");



app.use(expressjwt({secret: theKey,algorithms: ["HS256"]}).unless({path: ["/api/authorizationLogin"],}); 

.unless里面的内容是不需要进行token认证的方法,按需求设置

注意:该中间件需要放在路由之前!

猜你喜欢

转载自blog.csdn.net/qq_43376559/article/details/127019570