问题描述
我想通过短信和电子邮件向注册网络应用的用户发送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' }