UNPKG

sms-code

Version:

A package to generate random code and verify code.

81 lines (71 loc) 1.79 kB
/** * 初始参数 * @param maxAge 最大生存时间 默认为5 单位分钟, * @param codeLength 生成代码长度 默认为4 * */ const store = {}, numbers = '0123456789' let maxAge = 5, codeLength = 4 /** * 生成指定长度的随机数字 * @param length 指定长度 * @returns {string} 指定长度的数字字符串 */ const random = (length) => { length || (length = 4) let chars = '' let result = '' chars += numbers while (length > 0) { length-- result += chars[Math.floor(Math.random() * chars.length)] } return result } module.exports = { /** * 设置基础参数 * @param options = { * age: 最大生存时间 默认为5 单位分钟, * length: 生成代码长度 默认为4 * } */ setOptions: (options) => { if (options.age && options.age > 0) { maxAge = options.age } if (options.length && options.length > 0) { codeLength = options.length } }, /** * 获取随机生成的代码 * @param phone 获取验证码的手机号码 * @returns {string} 生成的代码 */ getCode: (phone) => { phone = String(phone) let code = random(codeLength) store[phone] = code setTimeout(() => { delete store[phone] }, maxAge * 60 * 1000) return code }, /** * 验证代码是否正确 * @param phone 需要验证的手机号码 * @param code 需要验证的手机号码对应的代码 * @returns {boolean} 验证结果 */ verifyCode: (phone, code) => { code = String(code) phone = String(phone) if (store[phone] && store[phone] === code) { delete store[phone] return true } else { return false } } }