简体   繁体   中英

Meteor custom create user form

Hey guys I am trying to make a custom registration form with the accounts-password package but i get an error in the console : Error invoking Method 'insertUser': Internal server error [500] and on the server side :

=> Meteor server restarted
I20170209-20:25:53.029(1)? Exception while invoking method 'insertUser' ReferenceError: password is not defined

This is my client side code :

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;
    }

});

and my server side code :

Meteor.methods({
  insertUser(emailVar, paswordVar){
    Accounts.createUser(emailVar, passwordVar);
  }
});

Thank you for every help ;)

It is just that you use the Accounts.createUser wrong, it should be this:

Meteor.methods({
  insertUser(emailVar, paswordVar){
    Accounts.createUser({
      email: emailVar,
      password: passwordVar
    });
  }
});

You don't need to call Accounts.createUser on the server in a Meteor method. In fact, doing so is dangerous because you are passing the password from the client to the server without encrypting it.

I recommend you read the docs for the functions you use: Link

In this case you can just use 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);
           }
       });

      [...]
    }

});

As a side note, in some cases you need to create a user on the server. In these cases you can use the Accounts._hashPassword() on the client before sending the password to the server. This ensures the password isn't sent in plain text.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM