如何过滤Accounts.createUser选项数据?

时间:2017-09-14 22:10:37

标签: javascript meteor passwords

在我的流星项目上注册。 我正在使用“帐户密码”模块,我想知道,如何在“options”参数中过滤或修改数据?

Accounts.createUser(options, [callback]) - 它存储用户名,电子邮件,密码。

例如,我想阻止用户使用特殊符号(!#@ $)创建用户名,例如:username.replace(/[^A-Z0-9]/ig, "") 我该如何配置?

我正在尝试“Accounts.onCreateUser”功能,但它只对“个人资料”(附加)信息有帮助。

2 个答案:

答案 0 :(得分:0)

Accounts.onCreateUser()允许您修改整个用户文档。您可以检查username字段并在其中替换您喜欢的字符。

示例:

Accounts.onCreateUser((options, user) => {
  user.username = user.username.replace(/[^A-Z0-9]/ig, "")
  return user;
});

答案 1 :(得分:0)

我们来看看Accounts.onCreateUser()

  

ARGUMENTS

     

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');
  }
  ...
});