Использование FlowRouter с onResetPasswordLink, onEnrollmentLink и onEmailVerificationLink

Я неохотно внедряю свою собственную систему учетных записей пользователей, потому что Meteor использует bcrypt для хранения зашифрованных паролей, а моя система электронной почты Dovecot/Postfix, работающая на экземпляре Ubuntu, использует SHA512. Разработчики Debian/Ubuntu решили не реализовывать bcrypt в своих дистрибутивах Linux, что потребовало выполнения этого довольно болезненного упражнения. Для этого мне нужно получить незашифрованный пароль в моих собственных учетных записях пользователей, чтобы сгенерировать и сохранить версию SHA512, которую я впоследствии использую для предоставления службы электронной почты для своих участников.

Я применил решение, предложенное @bgmaster и @stubailo ниже, но, похоже, оно не работает с FlowRouter. Как указал @bgmaster, он не смог заставить его работать с железом: маршрутизатор. В моем случае обратный вызов onEnrollmentLink никогда не запускается, очевидно, потому что FlowRouter получает управление до того, как функция сможет выполниться. Если я отбрасываю маршрут enroll-account/token, FlowRouter жалуется на отсутствие маршрута.

До того, как я вырву FlowRouter, кто-нибудь смог реализовать свою собственную систему учетных записей пользователей, используя основные учетные записи Meteor и FlowRouter? Еще лучше, есть ли способ получить незашифрованный пароль во время работы со стандартными учетными записями? Я бы предпочел использовать встроенный пакет «accounts-ui» или даже «useraccounts».

Спасибо!

Правильное использование методов onResetPasswordLink, onEnrollmentLink и onEmailVerificationLink в Meteor


person Gary Ebersole    schedule 09.05.2016    source источник


Ответы (1)


Вам придется свернуть свой собственный пользовательский интерфейс, а затем использовать Accounts.createUser()

Я настоятельно рекомендую вам вычислить хэш SHA512 на клиенте до вызова Accounts.createUser() и передать хэш как часть объекта profile, чтобы в конечном итоге он был сохранен вместе с учетной записью.

Ссылка для подтверждения электронной почты не имеет значения, так как пароль не фиксируется в этот момент, но вам также потребуется создать собственный пользовательский интерфейс для сброса пароля.

person Michel Floyd    schedule 09.05.2016
comment
Спасибо, Мишель. Хорошее предложение использовать объект профиля при создании нового пользователя. Я использовал отдельный документ «член» для дополнительной информации такого типа, но это хорошо для всех паролей. Это работает, но, как вы заметили, мне все еще приходится обрабатывать операции сброса пароля, и у меня пока нет решения для этого. Я могу захватить пароль с помощью своего собственного пользовательского интерфейса и обновить пароль SHA, но у Meteor, похоже, есть проблемы с функцией «готово» в обратных вызовах on **** Link. - person Gary Ebersole; 10.05.2016
comment
iirc хитрость с обратными вызовами et al для проверки связи в сочетании с маршрутизатором заключается в перемещении этих ссылок с /#/* на определенный маршрут, который не конфликтует с домашним маршрутом маршрутизатора. См. stackoverflow.com/a/33578408/2805154. - person Michel Floyd; 10.05.2016
comment
Мишель, обдумав твое предложение, я понял, что ты на правильном пути. Мне нужно обработать полный пользовательский интерфейс, включая операции «забыл/изменил/сброс». Вместо того, чтобы использовать методы send***Email, привязанные к методам on****Link (моя проблема), мне нужно отправлять свои собственные электронные письма со ссылками, которые я обрабатываю вне пакета учетных записей Meteor. Всегда заманчиво попытаться встать в середину рабочего процесса и использовать всю хорошую работу, проделанную другими, но не похоже, что это сработает. Спасибо еще раз. - person Gary Ebersole; 10.05.2016
comment
В своем приложении я повторно использовал рабочие процессы проверки и сброса, но явно обрабатывал их маршруты. Все получилось. Наслаждаться! - person Michel Floyd; 10.05.2016
comment
Я уже устанавливаю ссылки с «absoluteUrl» при запуске, чтобы удалить «#». Проблема в том, что функции on***Link никогда не запускаются. Возможно дело не в конфликте между FlowRouter и AutoLogin в пакете учетных записей. Может быть связано со ссылкой. Спасибо. - person Gary Ebersole; 10.05.2016