【问题标题】:How to generate a random number code to confirm an email如何生成随机数字代码以确认电子邮件
【发布时间】:2021-08-05 05:18:20
【问题描述】:

我是初学者,我在 Internet 上找不到通过电子邮件向刚刚注册或想要重置密码的用户发送 5 位数代码(例如)的教程。

我在 Node.js 下使用 Rest API 和 React.js 前端。因此,您必须注册用户并向他发送包含代码的电子邮件,当用户尝试连接而他的帐户在数据库中未显示为“活动”时,我们将要求他提供 5 位代码。

我找不到任何关于这种做法的教程来了解如何在没有安全漏洞的情况下以正确的方式进行操作。

感谢您的理解!

【问题讨论】:

    标签: javascript node.js reactjs api email-confirmation


    【解决方案1】:

    使用crypto生成随机数的最简单方法

    const crypto = require("crypto");
    
    // Asynchronous
    crypto.randomInt(0, 1000000, (err, n) => {
      if (err) throw err;
      console.log(n);
    });
    

    编码愉快..!

    【讨论】:

      【解决方案2】:

      使用原生的crypto 包会容易得多。

      const crypto = require('crypto')
      const randomEightDigits = crypto.randomBytes(6).toString('base64')
      

      【讨论】:

        【解决方案3】:

        从一组给定的字符生成一个五位数的代码是一项非常容易的任务。摆脱安全问题要困难得多,这取决于您所需的安全级别。

        如果您通过未加密的电子邮件发送代码,则安全性不是很高(中间人攻击)。如果您使用加密电子邮件 (PGP),则可以认为它是安全的。

        从给定集合生成 5 个字符代码的代码:

        const givenSet = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789";
        
        let code = "";
        for(let i=0; i<5; i++) {
           let pos = Math.floor(Math.random()*givenSet.length);
           code += givenSet[pos];
        }
        

        【讨论】:

          猜你喜欢
          • 2011-01-06
          • 2018-02-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-18
          • 1970-01-01
          • 2011-01-12
          • 1970-01-01
          • 2021-10-25
          相关资源
          最近更新 更多