【发布时间】:2014-12-17 19:12:45
【问题描述】:
我正在使用 Meteor 编写应用程序。在这个应用程序中,我想使用 Accounts.onCreateUser 实现用户数据的服务器端验证。传递了一些数据,只能在服务器端进行验证。
在客户端我调用:
Template.register.events({
'submit form': function (e) {
e.preventDefault();
var attributes = {
username: $("#inputUsername").val(),
password: $("#inputPassword").val(),
confirmation: $("inputConfirmation").val(),
email: $("#inputEmail").val(),
...
};
Accounts.createUser(attributes, function(err){
if (err) {
throwError(err);
} else {
}
});
}
});
在服务器端:
Accounts.onCreateUser(function(options, user) {
if(!verifyData(options))
throw new Meteor.Error(403, "Wrong input");
return user;
});
服务器端验证失败后,所有表单数据丢失。保存数据的最佳方式是什么?
【问题讨论】:
-
您实施服务器端验证的原因是什么?如果您没有在客户端上做任何不可能的事情,我强烈建议您只在客户端进行验证。您能否详细说明一下,一旦验证未通过,您想对数据做什么?
-
一个例子可能是验证码,它必须由服务器验证,或者必须根据数据库检查数据。当验证不通过时,输入字段的值应该仍然存在。
-
throwError函数内部发生了什么? -
@Kishin 一切都需要在服务器端进行验证...否则用户可能会打开浏览器控制台并通过方法调用直接向服务器发送错误数据。
-
throwError 仅将错误消息插入 Meteor.Collection
标签: meteor verification accounts