/// <summary> /// 创建并发送短信验证码 /// </summary> /// <param name="phoneNumber">手机号码</param> /// <param name="tag">业务标记</param> /// <param name="repeatSecs">多少秒内不得重复发送</param> /// <param name="expiredTime">过期时间</param> /// <returns></returns> public virtual async Task CreateAndSendVerificationMessage(string phoneNumber, string tag = null, int repeatSecs = 60, DateTime?expiredTime = null) { var code = await Create(phoneNumber, tag, repeatSecs, expiredTime); await _smsSender.SendCodeAsync(phoneNumber, code); }
public async Task SendPasswordResetCode(SendPasswordResetCodeInput input) { var user = GetUserByChecking(input.PhoneNumber); user.SetNewPasswordResetCode(); //发送短信密码重置验证码 await _smsSender.SendCodeAsync(user.PhoneNumber, user.PasswordResetCode); }
public async Task SendVerificationSms() { var user = await GetCurrentUserAsync(); var code = RandomHelper.GetRandom(100000, 999999).ToString(); var cacheKey = AbpSession.ToUserIdentifier().ToString(); var cacheItem = new SmsVerificationCodeCacheItem { Code = code }; _cacheManager.GetSmsVerificationCodeCache().Set( cacheKey, cacheItem ); await _smsSender.SendCodeAsync(user.PhoneNumber, code); }
public async Task SendTwoFactorAuthCode([FromBody] SendTwoFactorAuthCodeModel model) { var cacheKey = new UserIdentifier(AbpSession.TenantId, model.UserId).ToString(); var cacheItem = await _cacheManager .GetTwoFactorCodeCache() .GetOrDefaultAsync(cacheKey); if (cacheItem == null) { //There should be a cache item added in Authenticate method! This check is needed to prevent sending unwanted two factor code to users. throw new UserFriendlyException(L("SendSecurityCodeErrorMessage")); } var user = await _userManager.FindByIdAsync(model.UserId.ToString()); if (model.Provider != GoogleAuthenticatorProvider.Name) { cacheItem.Code = await _userManager.GenerateTwoFactorTokenAsync(user, model.Provider); var message = L("EmailSecurityCodeBody", cacheItem.Code); if (model.Provider == "Email") { await _emailSender.SendAsync(await _userManager.GetEmailAsync(user), L("EmailSecurityCodeSubject"), message); } else if (model.Provider == "Phone") { await _smsSender.SendCodeAsync(await _userManager.GetPhoneNumberAsync(user), cacheItem.Code); } } _cacheManager.GetTwoFactorCodeCache().Set( cacheKey, cacheItem ); _cacheManager.GetCache("ProviderCache").Set( "Provider", model.Provider ); }