校验token是否正确

前端

 uni.request({
			    url: httpUrl +'/varifoToken',
				method:'POST',
			    data: {
			      token
			    },
			    success: res => {
					console.log(res);
					if(res.data.code == 200 && res.data.msg == 'token有效'){
						console.log('进入首页');
						uni.switchTab({
							url: `/pages/index/index`
						});
					}else if(res.data.msg == '请重新登录'){
						console.log('进入登录页面');
						that.getOpenid()
						that.redirectToLogin()
					}
			    },
			    fail: err => {
					
			    }
			  })

node后端

const { sign, verify,TokenExpiredError ,JsonWebTokenError} = require('jsonwebtoken')
//检验token是否过期的函数
function isExpired(exp) {
  // 获取当前时间 当前时间戳秒
  const now = Date.now()/1000;
  // 对比是否过期
  return exp < now
}
varofyToken(req,res){
      const token = req.body.token

      try{
        const decoded = verify(token, secretKey)
        const {phone,openid,exp} = decoded
          console.log(decoded);
          dbpool.connect('SELECT * FROM user where openid = ?',[openid],(err,data)=>{
            if(!err){
                console.log('############');
                console.log(data.length);
                //验证openid是否在数据库中
                if(data.length>0&&data[0].openid == openid){
                  
                  // 检查过期
                  if (isExpired(exp)) {
                    throw new Error('Token expired')
                  }
                  res.status(200).json({
                    code: 200, //'
                    msg: 'token有效'
                  })
                }else{
                  res.status(200).json({
                    code: 404, //'
                    msg: '请重新登录'
                  })
                }
            }else{
                console.log('数据库出错啦');
                res.status(200).json({
                  code: 500, //token失效'
                  msg: '服务器出错啦'
                })
            }
        })
      }catch(err){
          console.log(err);
          if (err instanceof TokenExpiredError) {
            // JWT 过期错误
            // throw new Error('Token expired'); 
            res.status(200).json({
              code: 1002, //token失效'
              msg: '请重新登录'
            })
          }else {
            // 其他验证错误 
            res.status(200).json({
              code: 1001, //token不合法'
              msg: '请重新登录'
            })
          }
      }
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值