首页 > 解决方案 > 即使令牌已过期,AWS“CognitoUserSession”也始终返回 true

问题描述

我有一个包含以下代码的 lambda 函数;

    import {
      CognitoRefreshToken,
      CognitoAccessToken,
      CognitoIdToken,
      CognitoUserSession
    } from "amazon-cognito-identity-js";
........................
..........................
          const body = JSON.parse(event.body);
          const RefreshToken = new CognitoRefreshToken({
            RefreshToken: body.refreshToken
          });
          const IdToken = new CognitoIdToken({
            IdToken: body.idToken
          });
          const AccessToken = new CognitoAccessToken({
            AccessToken: body.accessToken
          });
          const sessionData = {
            IdToken: IdToken,
            AccessToken: AccessToken,
            RefreshToken: RefreshToken
          };
          const cachedSession = new CognitoUserSession(sessionData);
          if(cachedSession.isValid()) {
            //session is valid
          } else {
            //session expired(idToken and accessToken has expired)
          }

我面临的问题是即使idTokenaccessToken已过期,检查cachedSession.isValid()总是返回 true。但是从他们的官方文档来看,只有当accessTokenidToken有效时它才应该返回 true。

这里有什么问题。任何帮助将不胜感激。

作为参考,我遵循此https://gist.github.com/kndt84/5be8e86a15468ed1c8fc3699429003ad来实施授权流程。

标签: amazon-web-servicesaws-lambdaamazon-cognito

解决方案


推荐阅读