简体   繁体   中英

How can I check or verify that a user is signed in with AWS Cognito Javascript?

I am creating a React web app where the user sign in/up and other authentication related processes are being handled by AWS Cognito and the accompanying Javascript SDK .

My app has some 'public' routes/pages that everybody, signed in or not, can view, such as /documentation/ and /sign-in/. There also exist various private routes which you can only see when you are logged in, such as /my-documents/.

At the moment, I have a working sign in page, where a user is signed in with code very similar to use case #4 (Cognito Docs) .

My question now is: as soon as a user goes to /my-documents/, how do I check whether the user is signed in and actually has the rights to see this page?

I am not using AWS Amplify for the authentication in my app. I only use the NPM package 'amazon-cognito-identity-js'.

This is the code I currently use to check if the session is valid, in other words if the user is successfully signed in. This however, seems like a cumbersome way to check such a simple status.

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

  let isSessionValid = false;

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

  return isSessionValid;
};

isSessionValid在执行getSession的回调之前返回。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM