amazon-web-services - 是否可以使用 Lambda 触发器 PreSignUp_AdminCreateUser 生成用户名?
问题描述
我正在考虑在username
幕后自动生成,以便注册用户只需提供他们的电话号码,然后可以在不更改用户名(主要标识符)的情况下更改电话号码。
因此,我知道它可以在客户端的幕后完成,但我正在考虑使用 Cognito 中的 lambda 触发器(即PreSignUp_AdminCreateUser
触发器源)来完成它。该代码运行良好,但我收到一个错误,即用户名应该是在 iOS 上的客户端调用中提交的用户名。
我的 lambda 看起来像:
"use strict";
exports.handler = function(event, context, callback) {
if (event.triggerSource === "PreSignUp_SignUp") {
// generate unique random username
var username = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 16; i++) {
username += possible.charAt(Math.floor(Math.random() * possible.length));
}
console.log("Generated a unique username: " + username);
event.userName = username;
}
return callback(null, event);
};
这应该可能吗?有没有人为 Cognito 做过类似的事情?
解决方案
这是不可能的。
无论触发源是PreSignUp_SignUp
还是PreSignUp_AdminCreateUser
,事件响应只有三个布尔参数,分别autoConfirmUser
是:autoVerifyPhone
和autoVerifyEmail
。因此,用户名必须是事件请求中用户属性的一部分。
请参阅注册前 Lambda 触发器参数。
推荐阅读
- webstorm - Webstorm - 你如何找到所有的错别字?
- angular - http在Angular中调用api失败
- java - 使用正则表达式取消 camelCase Java 字符串
- date - 更改 Mailchimp 活动中列表字段的日期格式(非 API)
- mongodb - 没有在数据库级别执行带有 objectId 的过滤器
- java - 是否可以使用连接在远程网络上的设备调试应用程序?
- firebase - 在时间戳字段上查询 Firestore 数据库
- rally - Rally Lookback API 不检索 1 周后的记录
- apache-spark - StreamingQuery.awaitTermination 的目的是什么?
- firebase - 将 REST API 用于 id 令牌时对 Firebase 存储进行身份验证