Meteor:Accounts onCreateUser

时间:2013-12-26 16:03:44

标签: meteor

Accounts.onCreateUser(function(options,user){
  if (options.password.length < 6 && options.password.length != 0) {
    throw new Meteor.Error();
  } else if (options.password.length == 0) {
    throw new Meteor.Error();
  } else {
    user.password = options.password;
  }
});

简单的服务器端验证。

这是我的创建用户调用:

Accounts.createUser({email:email,username:username,password:password,profile:{firstname:firstname,lastname:lastname}},function(error){});

没有服务器端验证,它可以顺利运行。

问题是......当我使用onCreateUser时,它表示未定义的长度。

我猜.length就是问题所在。但我需要它。 任何解决方法?

2 个答案:

答案 0 :(得分:0)

你做不到。密码在代码中显式为deleted

// Attempt to log in as a new user.
Accounts.createUser = function (options, callback) {
  options = _.clone(options); // we'll be modifying options

  if (!options.password)
    throw new Error("Must set options.password");
  var verifier = SRP.generateVerifier(options.password);
  // strip old password, replacing with the verifier object
  delete options.password;
  options.srp = verifier;

答案 1 :(得分:0)

options对象具有以下结构:

{
    username: 'dummy',
    email: 'dumm@example.com',
    password: {
        digest: '7d1a54127b222502f5b79b5fb0803061152a44f92b37e23c6527baf665d4da9a',
        algorithm: 'sha-256'
    }
}

如您所见,password字段是一个带有摘要(散列)的对象,因此您无法在服务器上检索密码(也无法测试其长度)。

您似乎随后在服务器上的how to check password length上提出了另一个问题。答案就是支持你无法做到的事实。