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

本文详细介绍了如何在Node.js后端使用jsonwebtoken生成JWT令牌,并通过Express中间件进行验证。同时,讲解了微信小程序如何接收并存储token,在后续请求中添加到请求头以实现身份验证。步骤包括后端生成和验证token,以及前端接收和发送token的完整过程。
摘要由CSDN通过智能技术生成

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

一、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认证的方法,按需求设置

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值