2015-01-26 4 views
5

Кажется, что функция «Meteor.loginWithPassword» не работает при вызове метода.MeteorJs «loginWIthPassword» похоже не работает в методе

Я хочу создать свою регистрационную форму с автоформами, и поэтому я создал метод обратного вызова, который вызывается после того, как пользователь отправил регистрационную форму. Форма называется правильным, но функция loginWithPassword не работает.

Это мой метод (на клиентской стороне & сервера)

Meteor.methods({ 
    autoform_test_login : function (doc) { 
     console.log('Called login method'); 
     if (Meteor.isClient) { 
      Meteor.loginWithPassword('test', 'test', function(e) { 
       if (e) { 
        console.log(e); 
       } 
      }); 
     } 
    } 
}); 

Моего autoforms вызывает этот метод при подаче с:

{{#autoForm schema="Schema_Login" id="form_login" type="method" meteormethod="autoform_test_login"}} 
.... 

При подаче этой формы я получаю эту ошибку:

Error: No result from call to login {stack: (...), message: "No result from call to login"} 

Когда я открою консоль браузера и введите:

Meteor.call('autoform_test_login'); 

Я получу ту же ошибку.

Но: Когда я ввожу следующее в моей консоли работает (ошибка сейчас: Имя пользователя не найден):

Meteor.loginWithPassword('test', 'test', function(e) { 
       if (e) { 
        console.log(e); 
       } 
      }); 

Мой метод не делать абсолютно ничего, то это надрезается, поэтому я спрашиваю себя, что происходит здесь неправильно.

Пс .: Я знаю, что я добавил «тест» в качестве имени пользователя и «тест» в качестве пароля - его просто проверить. Даже когда вход правильный, ошибка всегда одна и та же.

+0

Вы когда-нибудь могли это исправить? У меня такая же проблема, и я не могу заставить ее работать. –

+1

Я открыл новую проблему для github для этого: https: // github.com/meteor/meteor/issues/4912 Репродукция репозитория: https://github.com/flipace/meteor-accounts-password-bug Похоже, что это происходит только при попытке использовать эту функцию в Meteor.methods функция. –

ответ

0

Убедитесь, что autoform фактически передает правильные значения. Если вы ошиблись в настройке схемы, она автоматически очистит значения (заданные до неопределенных), не выдавая ошибку.

Я также не совсем уверен, что если использование этого метода будет работать в этом случае, так как вы хотите сделать логин на клиенте, а не сервером (я думаю).

7

Хорошо, так что я получил ответ, и теперь я знаю, почему это работает не так, как ожидалось.

  1. loginWithPassord может быть выполнен только на заказчике.
  2. Когда вы используете Meteor.methods на клиенте, он все равно будет выполнять функции, которые вы определяете внутри него на сервере. Вот почему не будет работать вызов loginWithPassword внутри функции Meteor.methods.
  3. Просто используйте эту функцию в любом месте на клиенте. Например, непосредственно в рамках какого-либо события шаблона.

Взял меня навсегда, чтобы узнать, почему он не работает.

+0

насколько он защищен для использования этой функции на стороне клиента? –

+0

эта функция будет запускать поток входа, где реальный «вход» обрабатывается на сервере. клиент получит токен, если логин будет успешным. поэтому использование этой функции должно быть прекрасным. –

0

Убедитесь, что ваш текущий экземпляр Meteor имеет активное соединение с базой данных mongo, на которое указывает переменная MONGO_URL. Meteor.loginWithPassword не дает сообщение об ошибке, когда это соединение закрывается или ломается.

Смежные вопросы