直接说结论,这功能真的不好用!老老实实买其他验证方式吧。
概述
这个功能主要涉及到两个步骤,一是发邮件,二是验证,流程是:
用户注册 -> 发验证邮件 -> 访问验证 url -> 验证通过
简单来说就是先生成一条验证链接,发到对方的邮箱,让对方打开邮箱去确认,随后访问这条链接完成认证。
发邮件
通过 SMTP 协议去发送邮件,这部分不一定要自己实现,可以使用现成的模块,比如 nodemailer,只需要提供邮件服务器地址、端口等基本信息就行了。
url 的格式可以参考其他网站,生成 url 的关键在于要把身份信息放在 url 内,还得防止用户篡改或伪造。
验证
验证的关键在于得判断 url 是否合法(避免被篡改),其次是判断时效(超时后验证失败),最后是判断 url 是否被重复使用。
实现
发邮件
1 | // 创建一个 SMTP 客户端 |
验证
1 | module.exports = { |
总结
发送验证邮件的功能还是挺常见的,实现起来也不难,但就是不好用,发邮件的操作挺耗时的(看情况可以使用消息队列),还不保证对方能接到,有条件还是用其他验证方式吧,比如短信验证、滑动验证码。