当前位置: 首页 > 知识库问答 >
问题:

如何在AWS忘记密码的情况下支持多语言电子邮件

叶景龙
2023-03-14

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

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

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

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

这又该如何解决呢?

谢谢

共有1个答案

司空鸿熙
2023-03-14

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

另一种选择是假设用户的语言与请求来源地使用的语言相同(比如通过发送方的IP)。但这是非常不可靠的解决方案。

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

 类似资料:
  • 我正在尝试在Laravel中自定义密码重置电子邮件。 我必须重写此函数: 这是我的尝试: 我得到这个错误: Illumb\Foundation\Auth\User::sendPasswordResetNotification($token,Illumb\Http\Request$Request)的声明必须与Illumb\Contracts\Auth\CanResetPassword::sendPa

  • 你好,我正在做一个天气应用程序,我不需要用户用电子邮件和密码注册。我想用他们的名字注册他们,如果可能的话,把他们的名字存储在firebase中,并在应用程序中为他们命名。如何做到这一点?

  • 问题内容: 我碰到过此PHP代码,无需发送电子邮件即可使用SMTP检查电子邮件地址。 有没有人尝试过类似的方法或对您有用?您能告诉客户/用户输入的电子邮件是否正确并且存在吗? 问题答案: 有时 可以使用两种方法来确定收件人是否确实存在: 您可以连接到服务器,然后发出命令。很少有服务器支持此命令,但正是为此目的而设计的。如果服务器以2.0.0 DSN响应,则该用户存在。 您可以发出,然后查看邮件是否

  • 我已经创建了一个AWS cognito用户池,将电子邮件作为必需属性,并检查了电子邮件以进行验证。用户是使用AWSCognitoClient sdk和调用adminCreateUser(createUser)方法从我的java spring后端服务创建的。用户收到一封带有临时密码的电子邮件,第一次登录时将设置新密码。现在,当我执行忘记密码流时,我得到以下错误:, 虽然我已经收到了我注册的邮箱id的

  • 为您的 Flarum 添加新的界面语言很简单。按照下面的说明,下载并安装语言包即可。 在您安装并启用一个语言包后,您可以将其 设置为您论坛的默认语言。当您可以 随时禁用 用不到的语言。如果您有使用任何第三方扩展,请务必在开始前 阅读社区扩展说明。 欲开始,请访问 Flarum 社区上的 Extensions > Languages 标签,并找到您想要安装的语言包。 语言包的安装方式与 扩展 相同。

  • 我们在第十章介绍过国际化和本地化,开发了一个go-i18n库,这小节我们将把该库集成到beego框架里面来,使得我们的框架支持国际化和本地化。 i18n集成 beego中设置全局变量如下: Translation i18n.IL Lang string //设置语言包,zh、en LangPath string //设置语言包所在位置 初始化多语言函数: fu