发表于: 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,本来就不涉及什么算法。一般的难度其实不在于不知道某个算法,一般在于某个东西不知道怎么用。好的,又只是我认为。
四,明天的计划
任务七图片上传
评论