发表于: 2021-10-06 20:43:05

1 948


一,今天完成的事情

任务七。短信注册部分。

1,我选择的是腾讯短信服务。我选择短信服务最重要是便宜最好是免费,腾讯云目前每月前100条短信,针对个人客户免费。项目中提到的环信SDK,容联云怎么看怎么没有腾讯每月提供100条免费短信那么多。现在的短信文档,腾讯不少,而且写得比较好。


对个人客户认证友好。


官方是看  https://cloud.tencent.com/document/product/382/13613 。

使用短信服务的关键是:在服务提供平台进行注册以及配置。创建签名和模板,采用官方提供的SDK,调用接口。


2,必须做的步骤。如果没有腾讯云,注册腾讯云。https://console.cloud.tencent.com/sms/smslist 目前这个注册地址可用。

实名认证需要。如果在腾讯阿里有过存款外产品申购,也肯定做过实名认证。我这个财迷,以前做过。


3,添加一个应用,方便管理自己的短信配置的模块,起名要注意这个应用对应的是自己的哪个项目。

找到腾讯云短信服务



单击应用卡片进入要注意SDK AppID和App Key。


4,编辑短信。

因为我的验证码不涉及群发,所以我不设计群发。一般短信会要求设计内容和签名。都会发送出来。腾讯推荐选择签名类型选择公众号或小程序,尤其是微信公众号。建立一个微信公众号,问题来了,快速解决。就我自己一个读者的微信公众号,申请这次的短信内容就好。本来目前就是自娱自乐。


不管腾讯云有什么要求,比如先创建签名,才能创建内容,照着做。网站审核比较严谨,是为了安全。谢谢提供100条每月免费,而且界面相当好用,已经很感谢腾讯了。


注意腾讯给的短信模板。有点tiles的套模板的思路。



5,测试和写成util

添加依赖一个

<!--  Tencent text -->
<dependency>
 <groupId>com.github.qcloudsms</groupId>
 <artifactId>qcloudsms</artifactId>
 <version>1.0.6</version>
</dependency>


在没有和其它模块配合的时候,直接给一个验证码,写测试。成功发送短信到自己能接收到的手机上。


参考官方   文档中心 > 短信Java SDK 2.0  文档。https://cloud.tencent.com/document/product/382/13613

所以用到了appid,appkey。下面是代码。


// 短信应用 SDK AppID

int appid = 1400009099; // SDK AppID 以1400开头

// 短信应用 SDK AppKey

String appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad";

// 需要发送短信的手机号码

String[] phoneNumbers = {"21212313123", "12345678902", "12345678903"};

// 短信模板 ID,需要在短信应用中申请

int templateId = 7839; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请

// 签名

String smsSign = "腾讯云"; // NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请


这个网页不长,浏览不亏。


然后我把测试用的代码整合成TencentSMSUtil 类,加上生成验证码,还是六位随机。加上redis存储验证码,5分钟过期,10小时最多5条的逻辑。

加上.properties文件,不论是单独测试,还是携程util类。特别注意下面四个变量可以在腾讯云上找。

appkey

smsSdkAppId

TemplateID
sign


也有使用

secretId, secretKey


Redis处理,保存,用于发送短信验证码的util逻辑和发送邮件验证码的逻辑差不多。


7,也是要考虑防止短信攻击,我设置是10小时内短信不能超过5条。5分钟内不重复发送,验证码有效。也是考虑验证码超时失效,验证码错误,用户名或者手机号已经存在的情况,全部不能向下走注册流程。Controller的逻辑差不了太多。

Regex用的是我看到的,阅读后可以使用的

//验证手机号码格式
String phoneRegex = "^((\\+86)|(86))?1[3|4|5|7|8][0-9]\\d{4,8}$";


二,今天问题

迁移是需要考虑的问题。

暂时不需要考虑短信的回执以及回复。


三,今天的收获

使用sdk,本来就不涉及什么算法。一般的难度其实不在于不知道某个算法,一般在于某个东西不知道怎么用。好的,又只是我认为。


四,明天的计划

任务七图片上传



返回列表 返回列表
评论

    分享到