拒绝Cognito用户池中的注册请求

sfd*_*fdz 11 amazon-web-services amazon-cognito aws-lambda

Cognito用户池预注册Lambda触发器的说明为:

用户提交其信息进行注册时,将调用此触发器,从而使您可以执行自定义验证来接受或拒绝注册请求。

我想基于我的Lambda中的特定条件拒绝注册请求。触发参数(从下面的文档中复制)似乎仅支持自动验证和自动确认:

{
    "request": {
        "userAttributes": {
            "string": "string",
            ....
        },
        "validationData": {
            "string": "string",
            "string": "string",
             ....
        }
    },

    "response": {
        "autoConfirmUser": "boolean",
        "autoVerifyPhone": "boolean",
        "autoVerifyEmail": "boolean"
    }
}
Run Code Online (Sandbox Code Playgroud)

如何根据预注册Lambda触发器的结果接受或拒绝注册请求?

小智 12

另外,您也可以通过抛出一个异常,如拒绝注册这里

异常消息将以验证错误的形式传递回Cognito,再传递给客户端PreSignUp failed with error {exceptionMessage}.

  • 请注意,通过此类异常拒绝注册会导致它们在 CloudWatch 日志和指标中显示为“错误”,这可能是也可能不是理想的情况 (2认同)

Man*_*rya 8

您可以从lambda返回空dict,以拒绝注册请求。同样,您返回事件值本身以接受注册请求。

def lambda_handler(event, context):
    if denySignUp:
        return {}
    else:
        return event
Run Code Online (Sandbox Code Playgroud)

  • 如果要指定特定的拒绝类型或错误消息怎么办? (9认同)
  • 我要补充一点,在功能签名为`exports.handler =(event,context,callback)=>`的Node环境中,您可以使用`callback({})`拒绝请求,并使用`callback(null)接受,事件)。 (3认同)
  • @sfdz 对于节点环境使用 `callback({})` 拒绝请求实际上[与抛出异常相同](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog- model-handler.html)(因此比这个更符合 Grejdi 的答案)。在 Node env 中返回一个空对象将是“callback(null, {})”,它不会拒绝我的注册请求,而是给我一个“无效版本”。版本应该是 1` 错误。这让我相信,实际上不支持返回一个空对象来拒绝注册而不对 lambda 进行错误处理。 (2认同)
  • 这不再像您所期望的那样起作用。返回“{}”现在是一个错误:“版本无效。” 版本应为 1`。因此,虽然这仍然会拒绝注册,但您的错误日志将充满这些错误。至少如果你提出自己的异常,你可以用你选择的无意义的错误来填充你的错误日志;) (2认同)