如何验证JWT是否仍然有效?

Chr*_*lor 6 node.js jwt reactjs

我想从客户端每X分钟拨打一次电话,看看JWT是否仍然有效.我不知道如何在nodeJS中执行此操作.如果我已经获得授权,我该如何检查我是否仍然获得授权.

Dup*_*cas 8

处理令牌过期的一个优雅的解决方案是,当您设置令牌(inLocalStorage或 store(redux),或两者)时,还具有一个在令牌过期时准确运行的 Async 函数。像这样的东西:

const logUserOut = token =>{
    setTimeout(()=> MyLogoutFunction(), token.expiresIn)
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以确保在令牌不再有效时不会记录用户。


小智 7

您可以让您的客户端解码 JWT 并检查一个expiry字段并将其与系统时间进行比较。

例如。

  isExpired: (token) => {
    if (token && jwt.decode(token)) {
      const expiry = jwt.decode(token).exp;
      const now = new Date();
      return now.getTime() > expiry * 1000;
    }
    return false;
Run Code Online (Sandbox Code Playgroud)

您可以npm install jsonwebtoken在客户端使用或其他一些 npm 包来执行此操作