Учетные записи Meteor — пользователи выходят из системы при обновлении

Я использую пакеты «accounts-base» и «accounts-password» и метод Accounts.createUser для создания пользователей из формы входа (т. е. я не использую пакет account-ui).

документация поясняет, что созданный таким образом пользователь включает объект "услуги"

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

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

В документации предполагается, что токены возобновления автоматически обрабатываются пакетами account-base/accounts-password. Что я пропустил?

Accounts.createUser({
      username: username,
      email: username,
      password: password
    }, function (err) {
      if (err) {
        alert(err)
      } else {            
        Router.go('/member/' + Meteor.userId() +'/edit')               
      }
    });

создает:

 "resume" : 
{ "loginTokens" : 
  [
   {
   "when" : ISODate("2014-04-17T22:13:50.832Z"),
   "hashedToken" : "KstqsW9aHqlw6pjfyQcO6jbGCiCiW3LGAXJaVS9fQ+o=" 
   } 
  ] 
}

... но при обновлении:

"resume" : { "loginTokens" : [ ] } },

person Alex Webster    schedule 17.04.2014    source источник
comment
Accounts.createUser — это серверная функция. Как вы получаете доступ к клиентской функции Router.go в обратном вызове? Помните, где вы размещаете свой код...   -  person Andrew Mao    schedule 18.04.2014
comment
Согласно документации, Account.createUser доступен как на клиенте, так и на сервере. Я использую его на обоих, для разных целей, но эффект, насколько этот вопрос связан, одинаков: пользователь успешно создан, токены созданы, но обновление страницы в браузере выводит пользователя из системы и удаляет токены. Признаюсь, мне неясно, что должно произойти, но достаточно сказать, что я не хочу, чтобы пользователь выходил из системы при обновлении страницы по какой-либо причине.   -  person Alex Webster    schedule 18.04.2014


Ответы (1)


После исчерпывающего аудита моего кода я обнаружил, что (идиотски) вызывал метод Accounts.logout за пределами события кнопки выхода. Он каким-то образом стал «осиротевшим» во время более раннего рефакторинга кода.

Так что во всем виноват я.

person Alex Webster    schedule 18.04.2014