如何检查或验证用户是否使用 AWS Cognito Javascript 登录?

v0x*_*ili 5 javascript authentication amazon-web-services amazon-cognito aws-sdk

我正在创建一个 React Web 应用程序,其中用户登录/注册和其他身份验证相关流程由 AWS Cognito 和随附的Javascript SDK 处理

我的应用程序有一些“公共”路线/页面,每个人,无论是否登录,都可以查看,例如 /documentation/ 和 /sign-in/。还有各种私有路由,只有登录后才能看到,比如/my-documents/。

目前,我有一个可用的登录页面,其中用户使用用例 #4 (Cognito Docs)非常相似的代码登录。

我现在的问题是:一旦用户转到 /my-documents/,我如何检查用户是否已登录并实际有权查看此页面?

我没有在我的应用程序中使用 AWS Amplify 进行身份验证。我只使用 NPM 包“amazon-cognito-identity-js”。

这是我目前用来检查会话是否有效的代码,换句话说,用户是否成功登录。然而,这似乎是检查如此简单状态的繁琐方法。

const isAuthenticated = () => {
  const cognitoUser = userPool.getCurrentUser();

  let isSessionValid = false;

  if (cognitoUser) {
    cognitoUser.getSession((err: Error, result: CognitoUserSession) => {
      if (!err) {
        isSessionValid = result.isValid();
      }
    });
  }

  return isSessionValid;
};
Run Code Online (Sandbox Code Playgroud)

小智 -1

isSessionValid在回调 ingetSession执行之前返回。