Node.js становится популярным выбором для разработки аутентификационных систем с использованием Magic Link — уникальных URL для входа без паролей. Это упрощает процесс входа для пользователей и усиливает безопасность: вместо запоминания пароля они просто кликают по ссылке из электронного письма.
Как это работает
Magic Link — это сгенерированная ссылка, отправленная на электронную почту пользователя. При клике по ссылке происходит проверка токена сервером, и пользователь получает доступ. Принципиальная схема работы выглядит так:
- Отправка ссылки на email пользователя.
- Вход по ссылке ведет к проверке токена на сервере.
- Пользователь аутентифицирован без необходимости вводить пароль.
Настройка системы аутентификации
Для начала настройте пакет auth-verify с помощью команды:
npm install auth-verify
Пример кода для настройки:
const AuthVerify = require('auth-verify');
const auth = new AuthVerify({
mlSecret: 'super_secret_key',
mlExpiry: '5m',
appUrl: 'http://localhost:3000',
storeTokens: 'memory', // смените на 'redis' в продакшене
});
Далее потребуется веб-сервер, например, на базе Express.js. Следует настроить отправку email-ссылок — для этого используйте SMTP. Пример конфигурации для Gmail:
auth.magic.sender({
service: 'gmail',
sender: 'yourapp@gmail.com',
pass: 'your_gmail_app_password',
});
Отправка и верификация Magic Link
Создайте путь для отправки ссылки:
app.post('/auth/send', async (req, res) => {
const { email } = req.body;
await auth.magic.send(email);
res.json({ message: 'Magic link sent!' });
});
А вот код для проверки токена:
app.get('/auth/verify', async (req, res) => {
try {
const user = await auth.magic.verify(req.query.token);
res.json({ message: 'Login successful!', user });
} catch (err) {
res.status(400).json({ message: err.message });
}
});
Значение для разработчиков
Для разработчиков в России внедрение Magic Link аутентификации позволяет значительно повысить удобство для пользователей и уровень безопасности. Этот подход особенно актуален для SaaS-приложений, где количество пользователей может достигать десятков тысяч. Применение Magic Link может сократить время на поддержку паролей и снизить риск утечек паролей.
Следующий шаг для разработчиков — тестирование и оптимизация системы в реальных условиях, что поможет добиться максимальной безопасности и удобства для пользователей.