2012-01-12 2 views
11

У меня есть форма регистрации с единственным полем электронной почты. Когда пользователь вводит свой адрес электронной почты, мне нужно отправить ссылку регистрации.Node.js - Отправить email по регистрации

Я видел this Пример Node.js с регистрационной формой. Но у него есть функция sendWelcome.

Есть ли примеры приложений Node.js с отправкой регистрационного электронного письма?

ответ

22

Я пока не видел такого примера, но каков ваш вторичный вопрос? Пример, который вы предоставили, показывает, как отправить электронное письмо. Другой вариант заключается в использовании этого пакета:

https://github.com/Marak/node_mailer

Который также, кажется, хорошо документированы о том, как отправлять электронную почту.

Поэтому я предполагаю, что вы хотели бы знать, как настроить систему регистрации. Один из способов сделать это - иметь таблицу для регистрации пользователей, которая имеет столбцы e-mail и token. E-mail очевидно, token - это случайная строка (например, метод crypto.randomBytes узла), который будет отправлен как часть ссылки на пользователя. При вводе ссылки вы выполняете поиск в базе данных для этого токена, и если он найден, вы начинаете с регистрацией.

Следует отметить две вещи: при создании токена убедитесь, что он еще не существует в db. Во-вторых: рекомендуется использовать столбец valid_until для удаления токенов старше нескольких часов.

Update:

К сожалению, экспорт base64 узла не URL-сейф. Таким образом, это самый простой способ, чтобы получить маркер безопасности, я нашел:

require('crypto').randomBytes(48, function(ex, buf) { 
    token = buf.toString('base64').replace(/\//g,'_').replace(/\+/g,'-')); 
}); 

Perhaps someone will come up with a better solution.

+0

Спасибо за ответ. Я видел модуль node_mailer, которого интересует метод создания токена. Но мне нужно увидеть какой-то надежный пример, чтобы увидеть какую-либо практику предотвращения хакерской атаки. Является ли ваша формула безопасной? – Erik

+1

Ну, я думаю, это безопасно, как электронная почта. Вы не можете проверить пользователя по паролю, так как у вас его еще нет, поэтому вам нужно доверять тому, что пользователь, который знает секретный токен, отправляет по электронной почте, является фактическим владельцем электронной почты. Если вам нужна дополнительная защита, вы можете проверить IP-адрес запроса вместе со временем. Я не знаю о примерах узлов, но я видел этот принцип, используемый в приложениях rails. –

+0

Спасибо. И последний вопрос: как мне сгенерировать токен? используя только crypto.randomBytes или я должен склеить электронную почту + IP + что-то еще? – Erik