Je ne parviens pas à accéder à la page suivante sur le succès de l'authentification de connexion AWS Cognito à partir de mon application Web angulaire 2. La connexion est réussie et je peux voir le jeton dans la console, mais quand je navigue sur le succès de l'authentification, je reçois l'erreur ci-dessous. Quelle est l'erreur?Connexion AWS Cognito et routage Angular 2
Il me jette cette erreur:
EXCEPTION: Cannot read property 'navigate' of undefined
Le code est le suivant:
Component
authenticateUser(loginCredentials:any){
var authenticationData = {
Username : loginCredentials.username,
Password : loginCredentials.password
};
//console.log("authenticationData..",authenticationData);
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
console.log("authenticationDetails..",authenticationDetails);
var poolData = {
UserPoolId : "cognito user pool id ", // Your user pool id here
ClientId : "cognito user pool client id" // Your client id here
};
//console.log("poolData..",poolData);
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
console.log("userPool..",userPool);
var userData = {
Username : loginCredentials.username,
Pool : userPool
};
//console.log("userData..",userData);
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
console.log("cognitoUser..",cognitoUser);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
console.log('access token + ' + result.getAccessToken().getJwtToken());
console.log('idToken + ' + result.idToken.jwtToken);
if(result.getAccessToken().getJwtToken() != null){
this.router.navigate(['nextPage']);
}
},
onFailure: function(err) {
console.log('error : ' + err);
alert(err);
},
})
}
Probablement 'this' est perdu parce que vous appelez la fonction de routeur dans un rappel Cognito. Essayez de sauvegarder 'this' dans une variable (disons' self') avant cette fonction et appelez-la comme 'self.router ...'. – wostex
@wostex comment je fais ça? Pouvez-vous me montrer un exemple? –
Avant 'cognitoUser.authenticateUser', définissez' var self = this; 'et au lieu de' this.router.navigate' utilisez 'self.router.navigate'. – wostex