如何过滤Accounts.createUser选项数据?
问题描述:
在我的流星项目上做一个注册部分。 我正在使用“帐户密码”模块,我想知道,如何过滤或修改“选项”参数中的数据?如何过滤Accounts.createUser选项数据?
Accounts.createUser(options, [callback]) - 它存储用户名,电子邮件,密码。
例如,我想阻止用户使用特殊符号(!#@ $)创建用户名,例如:username.replace(/[^A-Z0-9]/ig, "")
我该如何配置?
我在尝试“Accounts.onCreateUser”函数,但它只对“profile”(附加)信息有帮助。
答
Accounts.onCreateUser()
允许您修改整个用户文档。您可以检查username
字段并尽可能多地替换字符。
例子:
Accounts.onCreateUser((options, user) => {
user.username = user.username.replace(/[^A-Z0-9]/ig, "")
return user;
});
答
让我们来看看Accounts.onCreateUser()
:
变元
FUNC功能
只要创建一个新的用户调用。返回新的用户对象,或抛出一个
Error
来中止创建。
因此,为了防止用户使用任何特殊字符的用户名,你应该做这样的事情:
Accounts.onCreateUser((options, user) => {
const re = new RegExp('^[a-z0-9]+$', 'i');
if (!re.test(user.username)) {
throw new Error('invalid-username', 'Entered username is invalid');
}
...
});
试图筛选客户端 - 是不是有效的,因为有人可以使用开发者控制台注册 –