手动设置AWS放大用户会话

时间:2020-05-06 20:13:53

标签: amazon-cognito aws-amplify

我有一个供多个应用程序使用的认知用户池。我有一个中央身份验证应用程序,用户可以在其中登录/注册/ resetPasswords / etc与身份验证相关的任何内容。

我还有五个用户可以访问的应用程序。而不是让他们登录到每个应用程序中,而是将身份验证应用程序嵌入到iframe中。如果用户登录,则对父文档执行postMessage,或者用户登录后令牌无效,它将使用cognito会话对象进行postMessage。

在父文档中是否可以完成诸如Auth.setUserSession(session)之类的操作? 现在,我必须用令牌和用户名值构建一堆字符串,并将它们手动保存到localStorage。

我一直在浏览aws-amplify身份验证代码,但看不到任何可以完成此操作的东西。

谢谢。

在父文档中:

header

1 个答案:

答案 0 :(得分:0)

您可以通过向 setSignInUserSession 方法提供认知用户会话来使用 amazon-cognito-identity-js 设置用户会话

const userPool = new CognitoUserPool({
  UserPoolId: `USER_POOL_ID`,
  ClientId: `APP_CLIENT_ID`,
});
const cognitoIdToken = new CognitoIdToken({
  IdToken: idToken,
});
const cognitoAccessToken = new CognitoAccessToken({
  AccessToken: accessToken,
});
const cognitoRefreshToken = new CognitoRefreshToken({
  RefreshToken: refreshToken,
});
const username = cognitoIdToken.payload.Username; // or what you use as username, e.g. email
const user = new CognitoUser({
  Username: username,
  Pool: userPool,
});
user.setSignInUserSession(new CognitoUserSession({
  AccessToken: cognitoAccessToken,
  IdToken: cognitoIdToken,
  RefreshToken: cognitoRefreshToken,
}));