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就是问题所在。但我需要它。 任何解决方法?
答案 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上提出了另一个问题。答案就是支持你无法做到的事实。