AWS API 授权调用 Header ( session.getIdToken().getJwtToken() )

AWS API Call with Authorization Header ( session.getIdToken().getJwtToken() )

我有一个使用 AWS API 网关并使用 AWS-Cognito 身份验证的网页。网页中的大多数按钮调用 Api 并发送或检索数据。这是我在每个按钮点击下使用的代码

getAuthenticateUser().getSession(function(err,session){
     if (err) {
        console.log("Error"+err);
        return;
    }
    if(session.isValid())
    {

    $.ajax({
        url: URL,
        headers:
      {
            'Authorization':session.getIdToken().getJwtToken(),
            'Content-Type':'application/json'

        },
        method: 'GET',
        dataType: 'json',

        success: function(data){

                // Execute Function Need to Execute on Success
        }


        ,
        error: function (xhr, textStatus, errorThrown) {


                console.log(errorThrown);


            }
      });

    }
    if(!session.isValid())
    {
        console.log("Session is not valid..!");
         //Please Login to Continue
    }

    });

这在没有 Issue.But 的情况下工作正常,问题是每次执行它都需要一些时间并且感觉每次它都会为每个调用提供新的 Session 甚至以前的 Session未过期。我如何才能使用 get new Session 仅当它过期并且如果 Previous Session 未过期只需在全局检查它的有效性并获得新的授权 Header Only I need..?

因为在我的代码中,一旦用户按下一个按钮并发送数据 id 相同的用户在 30 秒后按下另一个按钮,我又得到了新的 session 对吧..?它真的让我的网站性能非常糟糕。

知道如何解决这个问题吗?

这是我的 getAuthenticationUser() 代码

function getAuthenticateUser()
{

  return userPool.getCurrentUser();
}

这是我在 Javascript 页面中的全局变量

    var poolData = {
                    UserPoolId : 'usXXXXXXXXXXOv3jSL',
                    ClientId : 'XXXXXXXXXXka8g'
                 };
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
如果当前 session 有效,

getSession() 不会创建新的 session。

如果当前 session 为空或无效,它会尝试刷新 session(使用刷新令牌)以获取成功完成 HTTP 请求所需的 ID 令牌Authorization header。否则,它会抛出请求进行身份验证的错误。

您可以通过查看 CognitoUser class 定义来了解 getSession() 的确切作用。 (目前在第 1016 行。)