1

Je reçois l'erreur javascript suivant lorsque je tente de mettre en place un utilisateur authentifié avec un nouveau mot de passe et je ne peux pas savoir où ça se passe. Une fois que je l'appelle ma fonction de registre, l'utilisateur est en fait capable de remplacer leur mot de passe temporaire avec une nouvelle et tout semble bien dans la console Cognito. Ils sont également en mesure de se connecter avec leur nouveau mot de passe.Uncaught Erreur: n.onSuccess est pas une fonction AWS Cognito

Uncaught Error: n.onSuccess is not a function  request.js?1405:31 
    at Response.eval (eval at <anonymous> (app.js:1290), <anonymous>:17:14072) 
    at Request.eval (eval at <anonymous> (app.js:1746), <anonymous>:355:18) 
    at Request.callListeners (eval at <anonymous> (app.js:1056), <anonymous>:105:20) 
    at Request.emit (eval at <anonymous> (app.js:1056), <anonymous>:77:10) 
    at Request.emit (eval at <anonymous> (app.js:1746), <anonymous>:668:14) 
    at Request.transition (eval at <anonymous> (app.js:1746), <anonymous>:22:10) 
    at AcceptorStateMachine.runTo (eval at <anonymous> (app.js:1884), <anonymous>:14:12) 
    at eval (eval at <anonymous> (app.js:1884), <anonymous>:26:10) 
    at Request.eval (eval at <anonymous> (app.js:1746), <anonymous>:38:9) 
    at Request.eval (eval at <anonymous> (app.js:1746), <anonymous>:670:12) 

Ma fonction registre:

import {Config, CognitoIdentityCredentials} from 'aws-sdk' 
import {CognitoUserPool, CognitoUser, AuthenticationDetails, CognitoUserAttribute} from 'amazon-cognito-identity-js' 

import jwtDecode from 'jwt-decode' 
import store from './store' 

export default class CognitoAuth { 

    register (username, email, pass, newPassword, cb) { 
    let authenticationDetails = new AuthenticationDetails({ 
     Username: username, 
     Password: pass 
    }) 
    let cognitoUser = new CognitoUser({ 
     Username: username, 
     Pool: this.userPool 
    }) 

    cognitoUser.authenticateUser(authenticationDetails, { 
     newPasswordRequired: (userAttributes, requiredAttributes) => { 

     // the api doesn't accept this field back 
     delete userAttributes.email_verified 

     cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this) 
     } 
    }) 
    } 
} 

Register.vue

signup() { 
    this.$cognitoAuth.register(this.username, this.email, this.oldPass, this.newPass, (err, result) => { 
    if (err) { 
     this.error = true 
     this.errMsg = err.message 
     console.error(err) 
    } else { 
     console.log('Login Successful:', result) 
     this.$router.replace(this.$route.query.redirect || '/search') 
    } 
    }) 
} 

Répondre

2

vous manque la mise en œuvre de rappel onSuccess, qui est appelé en cas de succès à la nouvelle session. Voir la ligne 341 à CognitoUser.js.

Par exemple:

. 
. 
. 
cognitoUser.authenticateUser(authenticationDetails, { 
    onSuccess: (result) => { 
     // User authentication was successful. 
    }, 

    onFailure: (err) => { 
     // User authentication was not successful. 
    }, 

    mfaRequired: (codeDeliveryDetails) => { 
     // MFA is required to complete user authentication. 
     // Get the code from user and call: 
     cognitoUser.sendMFACode(mfaCode, this) 
    }, 

    newPasswordRequired: (userAttributes, requiredAttributes) => { 

     // the api doesn't accept this field back 
     delete userAttributes.email_verified; 

     cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this); 
    } 
}) 
. 
. 
. 
+0

Vous avez raison, je suis en fait simplement regarder leurs documents et obtenu ce travail, mais merci pour la réponse – itsclarke