Auth.signIn()の後にAuth.currentUserCredentials()を呼び出すと、有効な有効な資格情報を取得しますが、認証されていないユーザーの場合、なぜですか?
コード:
async signIn({ dispatch, state }, { email, password }) {
try {
const user = await Auth.signIn(email, password);
console.log("User state after login")
const userCredentialsAfterLogin = await Auth.currentUserCredentials();
console.log(userCredentialsAfterLogin)
} catch (error) {
console.log("error")
console.log(error)
return
}
await dispatch('fetchUser')
},
期待される動作:
有効なユーザーでサインインした後、Auth.currentUserCredentials()は認証された資格情報のセットを返す必要があります。
実際の動作:
Auth.currentUserCredentials()は、認証されたプロパティがfalseに設定され、400エラーの認証されていないユーザーを返します。 " ResourceNotFoundException:IdentityPool'eu-west-1:62dab5ed-5a84-4064-a7a2-87d1d0df511b '
システム:
設定
{
"authSelections": "userPoolOnly",
"resourceName": "testapp89e81d50",
"serviceType": "imported",
"region": "eu-west-1"
}
私はあなたがどこから来ているのか理解しています、そして正直なところ、これがうまくいかない理由を正確に述べている明確な文書をあなたに示すことはできません。CognitoとAmplifyに関するAWSのドキュメントは、Amplifyフレームワークがまだ内部で古いライブラリ(「amazon-cognito-identity-js」)を使用しており、Cognitoが両方のconnect-login-with-の名前であるため、まとめるのが困難です。 IAMおよびサインアップ/サービスとしてのサインインの提供。Cognitoは非常に強力で、正しく実行すればセキュリティの面で堅実ですが、セットアップは少し面倒です。
AmplifyAuthのAPIドキュメントなどのドキュメントが少しあります。currentCredentials / currentUserCredentialsが、とりわけ「identitiId」を含むオブジェクトを提供していることがわかります。Amplify Authフレームワークの認証情報は、CognitoIdentityを参照するAWSIAM認証情報を参照します。
Amplifyを使用して、電子メール/パスワードを使用してCognitoユーザープールにログインしているようです。CognitoユーザープールをCognitoIdentifyプールに接続して、AWSリソース(IAM認証情報)の使用に使用できるいくつかの認証情報とCognitoJWTトークンを「交換」できます。ただし、通常のサインイン/サインアップフローを機能させるためにこれは必要ありません。
だから、問題は:あなたは何が欲しいですか?
現在ログインしているCognitoユーザープールユーザー(メール、JWTトークン、JWTトークンに保存されているその他のフィールドなど)について知りたいですか?「currentUserInfo」または「currentUserSession」を使用します
AWSリソースを呼び出すためのIAM認証情報が実際に必要ですか?必ずCognitoユーザープールを作成してCognitoIDプールに接続し、フロントエンド設定でIDプールIDを構成してください。これを実行すると、「currentCredentials」を使用できるようになります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加