2017-12-11 3 views
0

Wenn sich ein Benutzer anmeldet, überprüfe ich, ob der Benutzer die erforderlichen Richtlinien für IoT hat, wenn nicht, schließe ich ihn an.AWS Cognito: Fehlende Anmeldeinformationen in der Konfiguration

Das funktioniert gut, wenn ich mich zum ersten Mal anmelde.

Jetzt, wenn ich abzumelden, und versuchen, sich mit einem anderen Benutzer anmelden, aus irgendwelchen Gründen die Anmeldeinformationen fehlen, und wenn ich die Seite bin erfrischend, seine wieder zu arbeiten ....

window.login = function() { 
    var shadowsRegistered = false; 

    AWSCognito.config.region = AWSConfiguration.region; 
    AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({ 
     IdentityPoolId: AWSConfiguration.IdPoolId 
    }); 

    var authenticationData = { 
     Username : document.getElementById("benutzername").value, 
     Password : document.getElementById("passwort").value 
    }; 

    var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData); 

    var poolData = { 
     UserPoolId : AWSConfiguration.UserPoolId, 
     ClientId : AWSConfiguration.ClientAppId 
    }; 

    var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData); 

    var userData = { 
     Username : document.getElementById("benutzername").value, 
     Pool : userPool 
    }; 

    var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData); 

    cognitoUser.authenticateUser(authenticationDetails, { 
     onSuccess: function (result) { 
     AWS.config.region = AWSConfiguration.region; 

     var auth_params = { 
      IdentityPoolId: AWSConfiguration.IdPoolId, 
      Logins : { 
      'cognito-idp.eu-central-1.amazonaws.com/eu-central-XXXX' : result.getIdToken().getJwtToken() 
      } 
     }; 

     AWS.config.credentials = new AWS.CognitoIdentityCredentials(auth_params); 
     var cognitoIdentity = new AWS.CognitoIdentity();   
     cognitoIdentity.getId(auth_params, function(err, data) { 
      if (err) { 
      cognitoId = AWS.config.credentials.identityId; 
      } 
      else{ 
      cognitoId = data.IdentityId; 
      } 
      var iot = new AWS.Iot(); 

      iot.listPrincipalPolicies({principal: cognitoId}, function(err, data) { 
      if (err) { 
       console.log(err, err.stack); //ERROR on 2nd login 
      } 
      else{ 
       // not related, works on the first login.. 

Der Fehler ich erhalte:

CredentialsError: Missing credentials in config

Antwort

0

ich es selbst fixiert. Sie müssen die zwischengespeicherten Anmeldeinformationen löschen.

$('#logout').click(function() { 
    currentUser = userPool.getCurrentUser(); 
    currentUser.signOut(); 
    AWS.config.credentials.clearCachedId(); 
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({}); 
    location.reload(); 
}); 
Verwandte Themen