bhm*_*bhm 10 javascript reactjs amazon-cognito aws-amplify
我们有一个使用 AWS Cognito 和 Amplify 的 React 客户端(“aws-amplify”:“1.1.40”)。
当用户登录时,我们希望向 Cognito 发送一些额外数据,以供“预令牌生成”触发器使用。我们通过向Auth.signIn 函数调用添加一个clientMetadata ({"metadataKey1": "metadataValue1"}) 对象来做到这一点:
Auth.signIn(auth.email, auth.password, {"metadataKey1": "metadataValue1"})
.then(response => {
// Sign in OK
})
.catch(error => {
// Something went wrong
});
Run Code Online (Sandbox Code Playgroud)
这按预期工作,Cognito“预令牌生成”lambda 可以"metadataKey1"从请求中的 clientMetadata 中提取。
这是我们的问题开始的地方:
成功登录后,AWS Amplify 会自动刷新会话。此会话刷新不是由我们的代码明确完成的,并且未设置在登录期间使用的 clientMetadata 对象。这当然意味着对 Cognito 的自动会话刷新请求不包含 clientMetadata,这反过来意味着 Cognito“预令牌生成”lambda 无法"metadataKey1"从请求中的 clientMetadata 中提取(因为它不存在)。
我们对代码进行了调试,发现对 Cognito 的自动请求发生在@aws-amplify\auth\node_modules\amazon-cognito-identity-js\es\CognitoUser.js#1249, CognitoUser.prototype.refreshSession。refreshSession 函数可以接收 clientMetadata 对象,但是在调试代码时,clientMetadata 对象始终是undefined(这是有道理的;我们没有明确设置它,而且 Amplify 代码似乎没有存储/使用我们在登录期间设置的 clientMetadata)。
我们需要什么帮助:
真的很感激这方面的任何帮助!
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |