Aws lambda 从Cognito触发器发送消息
我想限制用户从Cognito托管的UI登录。我可以看到我们可以在其中附加lambda的触发器,但是每当我在lambda内部更改事件对象时,我没有得到自定义消息Aws lambda 从Cognito触发器发送消息,aws-lambda,amazon-cognito,Aws Lambda,Amazon Cognito,我想限制用户从Cognito托管的UI登录。我可以看到我们可以在其中附加lambda的触发器,但是每当我在lambda内部更改事件对象时,我没有得到自定义消息用户超出限制,而是得到无法识别的lambda输出错误 有人能在这方面帮助我吗?或者有没有其他方法来实现此功能 现在,我明白了 使用此代码: exports.handler = (event, context, callback) => { if (true) { var error = new Error("
用户超出限制
,而是得到无法识别的lambda输出
错误
有人能在这方面帮助我吗?或者有没有其他方法来实现此功能
现在,我明白了
使用此代码:
exports.handler = (event, context, callback) => {
if (true) {
var error = new Error("Cannot signin because your signin count is 5");
// Return error to Amazon Cognito
callback(error, event);
}
// Return to Amazon Cognito
callback(null, event);
};
但是,我不希望前缀预验证因错误而失败,我只想显示我的消息
非常感谢您的帮助。目前,无法阻止Cognito添加前缀,因为表单是托管的web UI
如果这是一个硬需求,那么解决方法是创建您自己的登录表单并使用aws cognito sdk
在下面的代码中调用cognitoUser.authenticateUser后,预验证触发器将触发Lambda函数,您需要处理错误并对其进行解析以删除不需要的前缀
希望这有帮助
var authenticationData = {
Username : 'username',
Password : 'password',
};
var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
var poolData = { UserPoolId : 'us-east-1_TcoKGbf7n',
ClientId : '4pe2usejqcdmhi0a25jp4b5sh3'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var userData = {
Username : 'username',
Pool : userPool
};
var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
var accessToken = result.getAccessToken().getJwtToken();
/* Use the idToken for Logins Map when Federating User Pools with identity pools or when passing through an Authorization Header to an API Gateway Authorizer*/
var idToken = result.idToken.jwtToken;
},
//Your message from the Lambda will return here, you will need to parse the err to remove the unwanted prefix*
onFailure: function(err) {
alert(err);
},
});