From 8b7af98687dc7c3df3d0086795a6f28c3adb9ab9 Mon Sep 17 00:00:00 2001 From: colin Date: Sat, 8 Nov 2025 15:35:44 +0800 Subject: [PATCH] feat(sms): Use Alibaba Cloud SMS verification code --- .../LINGYUN/Abp/Sms/Aliyun/AliyunSmsSender.cs | 15 +++++++++++++-- .../Security/AccountSmsSecurityCodeSender.cs | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/aspnet-core/framework/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/AliyunSmsSender.cs b/aspnet-core/framework/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/AliyunSmsSender.cs index 5ce110221..c0958a652 100644 --- a/aspnet-core/framework/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/AliyunSmsSender.cs +++ b/aspnet-core/framework/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/AliyunSmsSender.cs @@ -51,6 +51,17 @@ public class AliyunSmsSender : ISmsSender, IAliyunSmsVerifyCodeSender AliyunFeatureNames.Sms.DefaultSendLimitInterval)] public async virtual Task SendAsync(SmsMessage smsMessage) { + if (smsMessage.Properties.ContainsKey("SmsVerifyCode") && + smsMessage.Properties.TryGetValue("code", out var code)) + { + // 调用短信验证码服务 + await SendAsync( + new SmsVerifyCodeMessage( + smsMessage.PhoneNumber, + new SmsVerifyCodeMessageParam(code.ToString(), "5"))); + return; + } + var domain = await SettingProvider.GetOrNullAsync(AliyunSettingNames.Sms.Domain); var action = await SettingProvider.GetOrNullAsync(AliyunSettingNames.Sms.ActionName); var version = await SettingProvider.GetOrNullAsync(AliyunSettingNames.Sms.Version); @@ -59,7 +70,7 @@ public class AliyunSmsSender : ISmsSender, IAliyunSmsVerifyCodeSender Check.NotNullOrWhiteSpace(action, AliyunSettingNames.Sms.ActionName); Check.NotNullOrWhiteSpace(version, AliyunSettingNames.Sms.Version); - CommonRequest request = new CommonRequest + var request = new CommonRequest { Method = MethodType.POST, Domain = domain, @@ -75,7 +86,7 @@ public class AliyunSmsSender : ISmsSender, IAliyunSmsVerifyCodeSender try { var client = await AcsClientFactory.CreateAsync(); - CommonResponse response = client.GetCommonResponse(request); + var response = client.GetCommonResponse(request); var responseContent = Encoding.Default.GetString(response.HttpResponse.Content); var aliyunResponse = JsonSerializer.Deserialize(responseContent); if (!aliyunResponse.IsSuccess()) diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Security/LINGYUN/Abp/Account/Security/AccountSmsSecurityCodeSender.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Security/LINGYUN/Abp/Account/Security/AccountSmsSecurityCodeSender.cs index 0b54fb383..be9e18d1d 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Security/LINGYUN/Abp/Account/Security/AccountSmsSecurityCodeSender.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Security/LINGYUN/Abp/Account/Security/AccountSmsSecurityCodeSender.cs @@ -26,6 +26,7 @@ public class AccountSmsSecurityCodeSender : IAccountSmsSecurityCodeSender, ITran var smsMessage = new SmsMessage(phone, token); smsMessage.Properties.Add("code", token); smsMessage.Properties.Add("TemplateCode", template); + smsMessage.Properties.Add("SmsVerifyCode", true); await SmsSender.SendAsync(smsMessage); }