嘿伙计们我正在尝试使用accounts-password包制作自定义注册表单,但我在控制台中遇到错误:Error invoking Method 'insertUser': Internal server error [500]
并且在服务器端:
=> Meteor server restarted
I20170209-20:25:53.029(1)? Exception while invoking method 'insertUser' ReferenceError: password is not defined
这是我的客户端代码:
Template.Anmeldung.events({
"submit .add-benutzer": function(event){
var Vorname = event.target.Vorname.value;
var Nachname = event.target.Nachname.value;
var Geburtsdatum = event.target.Geburtsdatum.value;
var Email = event.target.Email.value;
var Passwort = event.target.Passwort.value;
Meteor.call('addBenutzer', Vorname, Nachname, Geburtsdatum, Vorname)
Meteor.call('insertUser', Email, Passwort);
event.target.Vorname.value = "";
event.target.Nachname.value = "";
event.target.Geburtsdatum.value = "";
event.target.Email.value = "";
event.target.Passwort.value = "";
FlowRouter.go('/meineEvents');
return false;
}
});
和我的服务器端代码:
Meteor.methods({
insertUser(emailVar, paswordVar){
Accounts.createUser(emailVar, passwordVar);
}
});
感谢您的帮助;)
答案 0 :(得分:2)
只是你使用Accounts.createUser
错误,它应该是这样的:
Meteor.methods({
insertUser(emailVar, paswordVar){
Accounts.createUser({
email: emailVar,
password: passwordVar
});
}
});
答案 1 :(得分:-1)
您无需使用Meteor方法在服务器上调用Accounts.createUser
。实际上,这样做很危险,因为您将密码从客户端传递到服务器而不加密它。
我建议您阅读所使用功能的文档:Link
在这种情况下,你可以使用do
Template.Anmeldung.events({
"submit .add-benutzer": function(event){
var Vorname = event.target.Vorname.value;
var Nachname = event.target.Nachname.value;
var Geburtsdatum = event.target.Geburtsdatum.value;
var Email = event.target.Email.value;
var Passwort = event.target.Passwort.value;
Meteor.call('addBenutzer', Vorname, Nachname, Geburtsdatum, Vorname)
Accounts.createUser({ email: Email, password: Passwort} , (error) => {
if(error) {
alert(error.reason);
}
});
[...]
}
});
作为旁注,在某些情况下,您需要在服务器上创建用户。在这些情况下,您可以在将密码发送到服务器之前使用客户端上的Accounts._hashPassword()
。这可确保密码不以纯文本形式发送。