如何在 AWS Forgot Password 场景中支持多语言电子邮件

Posted

技术标签:

【中文标题】如何在 AWS Forgot Password 场景中支持多语言电子邮件【英文标题】:How to support multi-lingual email in AWS Forgot Password scenario 【发布时间】:2019-06-15 06:42:24 【问题描述】:

我正在使用 AWS Cognito 管理我的用户,并希望控制在“忘记密码”流程中发送给用户的电子邮件的措辞。

我的解决方案基于此: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-message.html

基本上,AWS 允许您定义一个 Lambda 函数,该函数将在需要发送电子邮件时被调用,并允许您定义电子邮件主题和正文的内容(将验证码注入正文)。

我的问题是: 用户可以使用多种语言之一的应用程序。这意味着德国用户可以用德语查看应用程序。 当他启动“忘记密码”流程时,他应该收到德语的电子邮件。 但是,Lambda 函数无法了解用户的任何信息,因为在此流程发生时他已注销,因此 Cognito 无法传递此信息。

如何解决?

谢谢。

【问题讨论】:

为什么不直接根据自定义消息 lambda 中的电子邮件地址检索用户数据? 这确实是我要做的。谢谢 【参考方案1】:

嗯,您需要以某种方式提取有关用户的信息。在这种情况下,Cognito 不会为您提供帮助,因为正如您所说,用户未经过身份验证。

您拥有的其他选项是假设用户的语言与发出请求的地方使用的语言相同(假设通过发件人的 IP)。但这是非常不可靠的解决方案。

另一种选择是创建一个 DynamoDB 表(或使用任何其他数据库解决方案,但 DynamoDB 最适合此任务)并将用户的电子邮件和该用户的语言存储在那里。然后,如果您调用 lambda 函数,您已经将用户的电子邮件地址传递给它,您可以在生成重置密码电子邮件之前使用它从 DynamoDB 中获取相应的语言。

【讨论】:

我喜欢数据库解决方案。谢谢

以上是关于如何在 AWS Forgot Password 场景中支持多语言电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

php Laravel:Forgot Password Controller for API

CSS3中password的属性如何修改?

找回密码实际项目

如何在aws设备场中为android espresso每次测试运行后清除设备数据

webdriver-io 是不是可以与 AWS 设备场一起使用?如何设置?

Appium:如何在开始测试运行 appium-testng 之前使用 java 在 aws 设备场设备上以编程方式创建 google 帐户