Добавить пользовательское поле в форму входа

#meteor #meteor-useraccounts

#метеор #метеор-учетные записи пользователей

Вопрос:

Используя пакет meteor useraccounts, я хотел бы добавить пользовательское поле в signIn форму (именованную token ), чтобы включить аутентификацию 2fa.

К сожалению AccountTemplates.addField , я работаю только с signUp формой, насколько я над ней работал.

Есть какие-нибудь подсказки?

Ответ №1:

В пакете accounts есть Accounts.onLogin функция, которую вы можете использовать для вызова метода и обновления учетной записи пользователя.

 Accounts.onLogin(function(user) {
  Meteor.call('setToken', user)
})
  

и затем

 Meteor.methods({
  setToken: function(user) {
    // Do some clever check
    Meteor.users.update(/* Set your token */);
  },
});
  

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

Комментарии:

1. Да, удалось использовать эту альтернативу. Также требуется: — некоторый пользовательский маршрут для применения 2FA на некоторых страницах — определить, входит ли в систему другой клиент, в противном случае вы можете войти в систему и установить токен, а также разрешить другим входить в систему только с паролем.

2. Извините, я думаю, что я что-то упускаю. В чем проблема с вашей маршрутизацией и многократным ведением журнала? Вы говорите о двух разных клиентах, пытающихся войти в систему, или об одном и том же клиенте с двух разных страниц?

3. Мне удалось заставить все это работать. Сделает ответ с подробностями

Ответ №2:

Ответ, который мне удалось реализовать, заключался в том, чтобы изменить шаблон с помощью другого подхода, используя непосредственно Meteor API:

  1. Установите специальное поле в коллекции пользователей: tokenverified: false
  2. Добавить Meteor.onLogin (вызывается при каждом входе в систему или обновлении страницы вручную) и Meteor.onLogout обратный вызов, чтобы установить для этого поля значение false
  3. Создайте шаблон verify2FA для работы с токеном и установите tokenverified: true
  4. Создайте плагин iron-router ensure2FA , который будет проверять этот токен и перенаправлять на verify2FA шаблон.