我正在使用Amazon进行用户身份验证。在用户注册后,验证电子邮件被发送到他的电子邮件地址。点击电子邮件链接后,他会在浏览器中得到提示。
如何自定义此页面,以便插入将在移动应用程序中触发深层链接的脚本,并使页面看起来更好看?
发布于 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 (执行验证请求的脚本)
发布于 2022-10-13 12:41:09
我无法自定义AWS提供的验证页面。我在我的页面上创建了我自己的UI,它将生成的代码发送到cognito进行验证。为此,我需要:
步骤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.sub
和event.request.codeParameter
。使用这些方法,我构建了一个链接到我的页面,如下所示:https://mypage.com?user_name=${event.request.userAttributes.sub}&confirmation_code=${event.request.codeParameter}
在我的页面上,我检查user_name和confirmation_code的url参数是否存在,并显示一个模式,如果验证是否正确,应该通知用户。
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);
然后,为了处理代码,我创建了一个用户实例:
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
});
该帐户被验证,您可以引导用户登录页面或任何其他。
https://stackoverflow.com/questions/61689046
复制相似问题