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;
}
});简单的服务器端验证。
下面是我的create user调用:
Accounts.createUser({email:email,username:username,password:password,profile:{firstname:firstname,lastname:lastname}},function(error){});
没有服务器端的验证,它就可以顺利地工作。
问题是..。当我使用onCreateUser时,它显示未定义的长度。
我猜.length才是问题所在。但我需要它。有什么解决方法吗?
发布于 2013-12-27 00:05:40
你不能这么做。密码在代码中是显式的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;发布于 2015-06-30 12:07:34
options对象具有以下结构:
{
username: 'dummy',
email: 'dumm@example.com',
password: {
digest: '7d1a54127b222502f5b79b5fb0803061152a44f92b37e23c6527baf665d4da9a',
algorithm: 'sha-256'
}
}正如您所看到的,password字段是一个带有摘要(散列)的对象,因此您无法在服务器上检索密码(也无法测试其长度)。
看起来您随后在服务器中的how to check password length上提出了另一个问题。这个问题的答案证明了你做不到的事实。
https://stackoverflow.com/questions/20787620
复制相似问题