我已经通过将自定义用户状态字段标记为已删除,使用 Cognito 实现了软删除功能。但是,我需要捕获登录尝试,并在身份验证后 Lambda 触发器中将其拒绝,就好像它们是无法识别的用户一样。如何在 Python 3.9 中做到这一点?
当我尝试返回错误时,我得到的只是“无法识别的 lambda 输出”和“InvalidLambdaResponseException”。
我尝试抛出一个错误或者类似这样的内容:
return {
"body": json.dumps({}, default=str),
"statusCode": 400,
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Expose-Headers": "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date",
# "Content-Length": "79",
"Content-Type": "application/x-amz-json-1.1",
# "Date": "Fri, 15 Nov 2024 19:14:19 GMT",
"X-Amzn-Errormessage": "Incorrect username or password.",
"X-Amzn-Errortype": "NotAuthorizedException:",
"X-Amzn-Requestid": context.aws_request_id
}
}
我认为您真正想要的功能是启用/禁用用户。无需使用 Lambda 触发器构建自己的解决方案,此功能开箱即用。
您可以使用AdminDisableUser API 停用特定用户,从而阻止他们登录,这实际上可以成为软删除。如果需要,您仍然可以添加自定义属性以使其更明确。
如果您想撤消软删除,只需使用AdminEnableUser重新激活它们。
由于您使用的是 Python,以下是相应的 boto3 文档: