【问题标题】:Otp Verification in nodejs?nodejs中的OTP验证?
【发布时间】:2026-01-23 12:10:02
【问题描述】:

我想通过 SMS 和电子邮件向注册网络应用的用户发送 otp,以验证他们的电子邮件和电话号码。 是否有任何用于发送和验证 OTP 的 NPM 包或者我应该编写自己的代码?

【问题讨论】:

    标签: node.js mern one-time-password


    【解决方案1】:

    是的,有一个名为sendotp 的包。这仅用于通过 SMS 发送 OTP。

    在 npmjs 中,您可以找到不同的示例来完成您的任务。

    但我的建议是实施您自己的方法来更好地发送和验证 OTP。因为通过使用包,您可能会获得根本不想要的额外方法,或者没有实现您想要的功能。

    【讨论】:

    • 我检查了 Sendotp,它只使用 msg91 发送短信,我不想从那里购买短信
    【解决方案2】:

    您可以使用 Nodemailer 进行电子邮件验证,使用 tviolio 进行短信验证。创建一个随机字符串并通过短信或电子邮件将其发送给用户,如果使用 mongodb,您可以检查何时创建 otp,并从中检查发送后经过了多少时间,但您可以设置过期时间。

    【讨论】:

      【解决方案3】:

      您可以使用 msg91 将 otp 发送给用户。
      登录 msg91 并获取您的 template_id 和 api_key。
      在 axios 中使用 msg91 api。

      const axios = require('axios');
      
      async function  sendOtpTOUser(phone) {
       const  template =  "template _id";
       const  apiKey = "api_key";         
       const sendotp = "https://api.msg91.com/api/v5/otp?template_id="+template+"&mobile="+phone+"&authkey="+apiKey;
                       let request_options1 = {
                        method: 'get',
                        url: sendotp
                    };  
           
        let otpResponse = await axios(request_options1);
        console.log(otpResponse.data)  
        return otpResponse.data;              
      }
      

      它会将对象返回为

      { request_id: '3166686e7867313634383535', type: 'success' }
      

      【讨论】: