nodejs中的Otp验证?

问题描述

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

解决方法

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

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

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

,

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

,

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

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' }