public virtual async Task SendPhoneRegisterCodeAsync(SendPhoneRegisterCodeDto input) { await CheckSelfRegistrationAsync(); await CheckNewUserPhoneNumberNotBeUsedAsync(input.PhoneNumber); var securityTokenCacheKey = SmsSecurityTokenCacheItem.CalculateCacheKey(input.PhoneNumber, "SmsVerifyCode"); var securityTokenCacheItem = await SecurityTokenCache.GetAsync(securityTokenCacheKey); var interval = await SettingProvider.GetAsync(IdentitySettingNames.User.SmsRepetInterval, 1); if (securityTokenCacheItem != null) { throw new UserFriendlyException(L["SendRepeatSmsVerifyCode", interval]); } var template = await SettingProvider.GetOrNullAsync(IdentitySettingNames.User.SmsNewUserRegister); // 安全令牌 var securityToken = GuidGenerator.Create().ToString("N"); var code = TotpService.GenerateCode(Encoding.Unicode.GetBytes(securityToken), securityTokenCacheKey); securityTokenCacheItem = new SmsSecurityTokenCacheItem(code.ToString(), securityToken); await SecurityCodeSender.SendPhoneConfirmedCodeAsync( input.PhoneNumber, securityTokenCacheItem.Token, template); await SecurityTokenCache .SetAsync(securityTokenCacheKey, securityTokenCacheItem, new DistributedCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(interval) }); }
public virtual async Task SendPhoneRegisterCodeAsync(SendPhoneRegisterCodeDto input) { await AccountAppService.SendPhoneRegisterCodeAsync(input); }