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