校验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: '请重新登录'
            })
          }
      }
    },

猜你喜欢

转载自blog.csdn.net/T3165919332/article/details/131835716
今日推荐