美文网首页
nodeJs 实现邮箱验证码注册

nodeJs 实现邮箱验证码注册

作者: 阿尔法_狗 | 来源:发表于2020-11-02 17:36 被阅读0次

nodeJs 实现邮箱验证码注册

功能设计

参考内容

1. 逻辑

用户输入邮箱,获取验证码

  • 验证该邮件是否已经注册过
  • 验证该邮件是否已经发送验证码,验证码是否过期。过期则重新生成验证码数据库更新验证码。否则生成验证码存入数据库
  • 基于nodemailer发送验证码
  • 注册成功,新用户信息插入用户表,删除emal表该用户验证码信息

2.数据表

User表

用户表

id email password
1 1@qq.com 密码
Email

生成验证码后,需要将验证码和邮箱存在email表,用户在注册提交时用来验证验证码是否正确是否过期。

用户注册成功后,删除该条记录。

id email email_code
1 1@qq.com 验证码

3. 邮箱开启SMTP服务(QQ邮箱)

image

4.代码参考


const NodeEmail = require('nodemailer');
const { emailConfig } = require('../../config/base');
const EmailModel = require('../model/Email');
const UserModel = require('../model/User');
const { EmailExistHttpException } = require('../lib/HttpException')
const transporter = NodeEmail.createTransport({
  service: 'qq',
  port: 465,
  secureConnection: true, 
  auth: emailConfig.auth // => { user: 你的邮箱, pass: 你的邮箱密码,开启POP3/SMTP的密码,如上图 }
});

class Email {

  static async getEmailCode(email) {
    const user = await UserModel.findUser(email);
    if (user) throw new EmailExistHttpException();
    const db = await EmailModel.findEmail(email);
    
    // 生成验证码
    let code = Math.random().toString().slice(-6);
    
    if (!db) { // 当前email不存在,既没有给该email发送过验证码
      await EmailModel.inster(email, code);
    } else { // 当前email,已经发送了验证码
      const startTime = new Date(db.createdAt).getTime();
      const intervalTime = 1000 * 60 * 60; // 过期时间
      if (new Date().getTime() - startTime > intervalTime ){
        await EmailModel.updateCode(email, code);
      }else{
        code = db.email_code;
      }
    }
    const subject = "账号注册";
    const text = "text";
    const html = `<div><span>验证码:</span><b>${code}</b></div>`;
    await Email.SendEmail(email, subject, text, html);
    return { message: '邮件已发送' };
  }

  static async SendEmail(email, subject, text, html) {
    return await transporter.sendMail({
      from: emailConfig.auth.user, // 发送者邮箱地址
      to: email,                   // 接收这邮箱地址
      subject,                     // 邮件主题
      html,                        // html模板
      text                         // 文本内容
    })
  }
}


module.exports = Email;

相关文章

  • nodeJs 实现邮箱验证码注册

    nodeJs 实现邮箱验证码注册 功能设计 参考内容 nodemailer官网[https://nodemaile...

  • 2020-07-06--django项目完善--用户注册以及登录

    用户注册初步实现 用户点击右上角的注册按钮后,会跳转到注册页面进行注册。 注册采用邮箱+密码+图片验证码的注册方式...

  • 如何注册账号?

    1、进入注册页面,路径:首页>>"商家登录/注册” 2、选择”注册“,输入邮箱和验证码,点击“发送注册邮箱"; 3...

  • vapor 邮件发送确认码

    接上节发送邮件,这次我们结合数据库实现发送邮件验证码我们假设的是用户注册验证码: 首先邮箱唯一,其次验证码有有效期...

  • 邮箱注册功能测试的测试点

    邮箱注册功能测试的测试点 1.输入正确的邮箱、密码、验证码进行注册,验证能否注册成功。 正常流测试:几项必填项全部...

  • 零基础使用Django2.0.1打造在线教育网站(十三):邮箱验

    写在前面 本篇笔记主要解决用户注册,验证码的实现,邮箱验证码的发送这3个问题。 本篇笔记对应于第十三篇代码,对应于...

  • 用户注册(五)

    主要实现功能 用户输入邮箱、密码和验证码,点注册按钮如果输入的不正确,提示错误信息如果正确,发送激活邮件,用户通过...

  • Django学习记录第五天—注册2

    之前我们的html跟验证码已经处理完成,接下来我们来解决一下邮箱注册,为什么使用邮箱注册呢,额。。。大概是因为免费...

  • 【软件测试】注册界面测试案例注意点

    注册界面一般会包括用户名、密码、确认密码、验证码、短信验证码、邮箱等等 1.测试用户名是否已被注册。 2.输入正确...

  • 临时邮箱,无限注册小号

    今天给大家分享临时邮箱 ▍推荐说明 我们在注册一些账号的时候,需要用到邮箱接收验证码,有些时候我们不想用自己的邮箱...

网友评论

      本文标题:nodeJs 实现邮箱验证码注册

      本文链接:https://www.haomeiwen.com/subject/bpspmktx.html