我将令牌配置为:

jwt.sign(
  {
    user: pick(user, ['_id', 'username'])
  },
  secret,
  {
    expiresIn: '2m'
  }
);

但当我想判断令牌是否过期时,此代码不起作用:

function isAuthenticated() {
  const token = localStorage.getItem('token');
  const refreshToken = localStorage.getItem('refreshToken');
  try {
    decode(token);
    const { exp } = decode(refreshToken);
    if (exp < (new Date().getTime() + 1) / 1000) {
      return false;
    }
  } catch (err) {
    return false;
  }
  return true;
}

问题在于这一部分:

if (exp < (new Date().getTime() + 1) / 1000) {
  return false;
}

新日期().getTime()+1)/1000=1531335468.113

exp=1531334595

因为我不知道JWT使用的时间格式...

我该如何解决这个问题?

推荐答案

答案如下:

if (Date.now() >= exp * 1000) {
  return false;
}

Node.js相关问答推荐

如何使用Node.js、Express和Mongoose创建多个API

Node.js中Redis的并发问题

Node-Red Tasmota 错误:连接 ECONNREFUSED 192.168.77.21:1883

为什么即使数据库确实更新了,此 POST 也无法解析并返回 200 代码?

在nodejs中为oauth请求创建和存储csrf令牌的最佳方法

bcrypt.compare 每次都返回 false

找不到模块bcryptjs

yarn 安装失败,因为 node-gyp 正在寻找过时的 node 版本标头

为什么当我使用waitForSelector时 Puppeteer 导致我的测试套件挂起 30 秒,即使我在页面和浏览器上调用关闭?

如何使用 $PATH 变量在系统中全局自动安装 bash 脚本?或者重写脚本到node

在路由上使用中间件时,Nodejs Express 应用程序失败

加速 sequelize ORM 中的查询

在 Express.js 中迭代子文档数组

无法通过谷歌Electron 表格 api( node js)中的服务帐户访问写入

如果 express.js (node.js) http 请求在完成之前关闭会发生什么?

无服务器无法获取所有记录事件对象验证失败?

node.js 中 res.setHeader 和 res.header 的区别

Ansible 将以什么用户身份运行我的命令?

如何让should.be.false语法通过 jslint?

什么是 JavaScript 中的REPL?