Passport Magic Login 开源项目教程
项目介绍
passport-magic-login
是一个基于 Node.js 的开源项目,旨在通过魔法链接(Magic Link)实现无密码登录。该项目利用 Passport.js 进行身份验证,通过发送包含登录令牌的链接给用户,用户点击链接即可完成登录,无需输入密码。这种方式提高了用户体验,同时增强了安全性。
项目快速启动
安装依赖
首先,克隆项目仓库并安装必要的依赖:
git clone https://github.com/mxstbr/passport-magic-login.git
cd passport-magic-login
npm install
配置环境变量
创建一个 .env
文件,并添加以下环境变量:
SECRET_KEY=your_secret_key
EMAIL_HOST=your_email_host
EMAIL_PORT=your_email_port
EMAIL_USER=your_email_user
EMAIL_PASS=your_email_pass
启动服务器
运行以下命令启动服务器:
npm start
示例代码
以下是一个简单的示例代码,展示如何使用 passport-magic-login
实现无密码登录:
const express = require('express');
const passport = require('passport');
const MagicLoginStrategy = require('passport-magic-login');
const app = express();
const magicLogin = new MagicLoginStrategy({
secret: process.env.SECRET_KEY,
callbackUrl: '/auth/magiclogin/callback',
sendMagicLink: async (destination, href) => {
// 发送邮件逻辑
},
verify: (token, callback) => {
// 验证逻辑
}
});
passport.use(magicLogin);
app.use(passport.initialize());
app.post('/auth/magiclogin', passport.authenticate('magiclogin'));
app.get('/auth/magiclogin/callback', passport.authenticate('magiclogin', {
successRedirect: '/',
failureRedirect: '/login'
}));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
应用案例和最佳实践
应用案例
- 无密码登录系统:许多现代应用选择无密码登录来提高用户体验和安全性,
passport-magic-login
提供了一个简单且安全的解决方案。 - 多因素认证:结合其他认证方式,如短信验证码或生物识别,可以进一步增强系统的安全性。
最佳实践
- 安全密钥管理:确保密钥存储在安全的环境变量中,避免硬编码。
- 邮件发送服务:选择可靠的邮件发送服务,确保用户能够及时收到魔法链接。
- 链接有效期:设置魔法链接的有效期,过期后链接失效,增强安全性。
典型生态项目
- Passport.js:
passport-magic-login
是基于 Passport.js 构建的,Passport.js 是一个广泛使用的 Node.js 身份验证中间件。 - Node.js:该项目依赖于 Node.js 运行时环境,Node.js 是一个高性能的服务器端 JavaScript 环境。
- Express.js:示例代码中使用了 Express.js 框架,Express.js 是一个简洁而灵活的 Node.js Web 应用框架。
通过以上内容,您可以快速了解并启动 passport-magic-login
项目,并了解其在实际应用中的使用方法和最佳实践。