/// <summary> /// 发送短信验证码 /// </summary> /// <param name="phone">手机号码</param> /// <param name="code">验证码</param> /// <returns></returns> public async Task SendCodeAsync(string phone, string code) { var result = await SmsService.SendCodeAsync(phone, code); if (!result.Success) { Logger.Error("短信发送失败:" + result.ErrorMessage); throw new UserFriendlyException(_appLocalizationManager.L("SmsSendError")); } }
/// <summary> /// 创建验证码 /// </summary> /// <param name="phoneNumber">手机号码</param> /// <param name="tag">业务标记</param> /// <param name="repeatSecs">多少秒内不得重复发送</param> /// <param name="expiredTime">过期时间</param> /// <returns></returns> public virtual async Task <string> Create(string phoneNumber, string tag = null, int repeatSecs = 60, DateTime?expiredTime = null) { var code = RandomHelper.GetRandom(1000, 9999).ToString(); var cacheKey = $"{phoneNumber}_{tag}"; var outTime = DateTime.Now.AddSeconds(-repeatSecs); var cash = await _cacheManager.GetSmsVerificationCodeCache().GetOrDefaultAsync(cacheKey); //验证码长度为4,60s内不得重复发送 if (cash != null && cash.CreationTime >= outTime) { throw new UserFriendlyException(_appLocalizationManager.L("SmsRepeatSendTip")); } var cacheItem = new SmsVerificationCodeCacheItem { Code = code, ExpiredTime = expiredTime }; _cacheManager.GetSmsVerificationCodeCache().Set( cacheKey, cacheItem ); return(code); }