Browse Source

feat(sms): Use Alibaba Cloud SMS verification code

pull/1365/head
colin 5 months ago
parent
commit
8b7af98687
  1. 15
      aspnet-core/framework/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/AliyunSmsSender.cs
  2. 1
      aspnet-core/modules/account/LINGYUN.Abp.Account.Security/LINGYUN/Abp/Account/Security/AccountSmsSecurityCodeSender.cs

15
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)] AliyunFeatureNames.Sms.DefaultSendLimitInterval)]
public async virtual Task SendAsync(SmsMessage smsMessage) 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 domain = await SettingProvider.GetOrNullAsync(AliyunSettingNames.Sms.Domain);
var action = await SettingProvider.GetOrNullAsync(AliyunSettingNames.Sms.ActionName); var action = await SettingProvider.GetOrNullAsync(AliyunSettingNames.Sms.ActionName);
var version = await SettingProvider.GetOrNullAsync(AliyunSettingNames.Sms.Version); 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(action, AliyunSettingNames.Sms.ActionName);
Check.NotNullOrWhiteSpace(version, AliyunSettingNames.Sms.Version); Check.NotNullOrWhiteSpace(version, AliyunSettingNames.Sms.Version);
CommonRequest request = new CommonRequest var request = new CommonRequest
{ {
Method = MethodType.POST, Method = MethodType.POST,
Domain = domain, Domain = domain,
@ -75,7 +86,7 @@ public class AliyunSmsSender : ISmsSender, IAliyunSmsVerifyCodeSender
try try
{ {
var client = await AcsClientFactory.CreateAsync(); var client = await AcsClientFactory.CreateAsync();
CommonResponse response = client.GetCommonResponse(request); var response = client.GetCommonResponse(request);
var responseContent = Encoding.Default.GetString(response.HttpResponse.Content); var responseContent = Encoding.Default.GetString(response.HttpResponse.Content);
var aliyunResponse = JsonSerializer.Deserialize<AliyunSmsResponse>(responseContent); var aliyunResponse = JsonSerializer.Deserialize<AliyunSmsResponse>(responseContent);
if (!aliyunResponse.IsSuccess()) if (!aliyunResponse.IsSuccess())

1
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); var smsMessage = new SmsMessage(phone, token);
smsMessage.Properties.Add("code", token); smsMessage.Properties.Add("code", token);
smsMessage.Properties.Add("TemplateCode", template); smsMessage.Properties.Add("TemplateCode", template);
smsMessage.Properties.Add("SmsVerifyCode", true);
await SmsSender.SendAsync(smsMessage); await SmsSender.SendAsync(smsMessage);
} }

Loading…
Cancel
Save