Yello, у меня есть следующий сценарий.
После первого входа в систему пользователи должны выбрать свой тип, я получил это, вызвав лямбду, которая добавляет пользователя в соответствующую группу Cognito.
После успешного вызова я хочу обновить сеанс пользователя в своем приложении React, которое я вызываю с помощью следующего кода:
refreshSession = () => {
return new Promise((resolve, reject) => {
this.props.authenticatedUser.refreshSession(this.props.authenticatedUser.signInUserSession.refreshToken, () => {
Auth.currentAuthenticatedUser()
.then(updatedAuthUser => {
this.props.onUserAuthenticated(updatedAuthUser); // update redux state
resolve();
})
.catch(err => {
console.log(err);
reject();
});
});
});
};
Он выполняет свою работу, когда дело доходит до обновления значений idToken - полезная нагрузка idToken имеет обновленные группы пользователей и роли.
Проблема, с которой я столкнулся, заключается в вызове API, который я выполняю после вызова моей функции refreshSession, определенной выше. Лямбда-вызов ведет себя так, как будто пользователь не принадлежит к группе Cognito, в которую он был добавлен, и я получаю ответ 403. Если я выйду из системы и войду снова, я смогу успешно вызвать API.
Так эффективно я делаю что-то вроде (псевдокод):
addUserToCognitoGroup()
.then(() => {
// user is added to Cognito Group
refreshIdToken().then(() => {
// my idToken seems to be refreshed
doSomethingThatRequiresMembershipInTheGroup() // this API call returns 403
})
Я предполагаю, что это может быть связано с тем, что мой код не обновляет токен доступа, но я изо всех сил пытаюсь найти способ правильно обновить весь сеанс пользователя.
Мои зависимости package.json
"dependencies": {
"amazon-cognito-identity-js": "^2.0.11",
"aws-amplify": "^0.4.6",
"aws-api-gateway-client": "^0.2.13",
"aws-sdk": "^2.263.1",
"aws-serverless-express": "^3.2.0",
"aws4": "^1.6.0",
"axios": "^0.18.0",
"express": "^4.15.2",
"graphql": "^0.13.2",
"lodash": "^4.17.10",
"moment": "^2.22.2",
"react": "^16.4.1",
"react-bootstrap": "^0.32.1",
"react-dom": "^16.4.1",
"react-intl": "^2.4.0",
"react-redux": "^5.0.7",
"react-router": "^4.3.1",
"react-router-bootstrap": "^0.24.4",
"react-router-dom": "^4.3.1",
"react-scripts": "^1.1.4",
"react-table": "^6.8.6",
"redux": "^4.0.0"
}
Любые указатели будут высоко оценены:)