我正在寻找在幕后自动生成username
的方法,以便注册用户只需提供他们的电话号码,然后可以在不更改用户名(主要标识符)的情况下对其进行更改。
因此,我知道可以在客户端后台进行此操作,但是我正在考虑使用Cognito中的lambda触发器(即PreSignUp_AdminCreateUser
触发器源)来完成此操作。该代码运行良好,但是我收到一个错误,该用户名应该是在client call on 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做过类似的事情?
答案 0 :(得分:1)
那不可能。
无论触发源是PreSignUp_SignUp
还是PreSignUp_AdminCreateUser
,事件响应都只有三个布尔参数,即:autoConfirmUser
,autoVerifyPhone
和autoVerifyEmail
。因此,用户名必须是事件请求中用户属性的一部分。