首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义电子邮件验证页面AWS认知

自定义电子邮件验证页面AWS认知
EN

Stack Overflow用户
提问于 2020-05-08 22:19:33
回答 2查看 3.1K关注 0票数 10

我正在使用Amazon进行用户身份验证。在用户注册后,验证电子邮件被发送到他的电子邮件地址。点击电子邮件链接后,他会在浏览器中得到提示。

如何自定义此页面,以便插入将在移动应用程序中触发深层链接的脚本,并使页面看起来更好看?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-09 16:15:31

你可以用科尼图触发器来实现这一点。

您可以配置触发器模板,以使用指向您控制的页的链接定义消息。这些资产将存储在:amplify/backend/auth/<your-resource-name>CustomMessage/assets

文档有更多的细节

当用户试图注册一个帐户时,科尼图允许你配置你的用户池来发送电子邮件给他们。您可以配置此电子邮件,以包含一个链接到科尼图的托管用户界面,其中用户的帐户将被标记为确认。 此触发器模板允许您定义带有一个指向您控制的静态S3桶的链接的电子邮件,在该链接中,用户的帐户将被确认,然后它们可以重定向到您选择的URL (想必是您的应用程序)。URL将自动包含用户名作为查询字符串参数。 请注意,此触发器模板将创建一个S3资源。填充静态站点的文件可以在扩容/后端/auth/CustomMessage/assets中进行编辑。它们包括: index.html spinner.js (在用户等待确认时控制显示在页面上的自旋器) style.css verify.js (执行验证请求的脚本)

票数 1
EN

Stack Overflow用户

发布于 2022-10-13 12:41:09

我无法自定义AWS提供的验证页面。我在我的页面上创建了我自己的UI,它将生成的代码发送到cognito进行验证。为此,我需要:

  1. 注册时触发自定义电子邮件
  2. 使用为lambda提供的代码在电子邮件中添加自定义链接到验证。
  3. 处理我页面上的代码
  4. 通过aws包发送代码和用户名

步骤1.在AWS认知用户池中,使用触发器自定义工作流,选择“自定义消息”。我检查的用于验证的triggerSource是:

event.triggerSource === 'CustomMessage_SignUp' || event.triggerSource === 'CustomMessage_ResendCode'

您可以在这里看到CustomMessage的其他触发器源:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-message.html

步骤2. lambda为我的用户提供验证参数:event.request.userAttributes.subevent.request.codeParameter。使用这些方法,我构建了一个链接到我的页面,如下所示:https://mypage.com?user_name=${event.request.userAttributes.sub}&confirmation_code=${event.request.codeParameter}

在我的页面上,我检查user_name和confirmation_code的url参数是否存在,并显示一个模式,如果验证是否正确,应该通知用户。

  1. 我使用一个包“js”来处理代码和user_name。首先,我创建用户池:
代码语言:javascript
运行
复制
import { CognitoUserPool } from 'amazon-cognito-identity-js';
//Aws-cognito credentials
const poolData = {
  UserPoolId: YOUR_USERPOOL_ID,
  ClientId: YOUR_CLIENT_ID,
};

export default new CognitoUserPool(poolData);

然后,为了处理代码,我创建了一个用户实例:

代码语言:javascript
运行
复制
import { CognitoUser } from 'amazon-cognito-identity-js';
import UserPool from 'utils/UserPool';

const getUser = () => {
    return new CognitoUser({
      Username: user_name.toLowerCase(),
      Pool: UserPool,
    });
  };


// After that you can process the code:



getUser().confirmRegistration(code, false, function (err, result) {
   if (err) {
      if (
        err.message === 'User cannot be confirmed. Current status is CONFIRMED'
      ) {
        // Handle already confirmed error
      } else {
        // Handle other errors you want
      }
    }
   // Handle successful verification
});

该帐户被验证,您可以引导用户登录页面或任何其他。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61689046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档