Meteor自定义创建用户表单

时间:2017-02-09 19:38:02

标签: javascript html mongodb meteor

嘿伙计们我正在尝试使用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);
  }
});

感谢您的帮助;)

2 个答案:

答案 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()。这可确保密码不以纯文本形式发送。