【瑞吉外卖】day08:短信发送、手机验证码登录(二)

本文涉及的产品
数字短信套餐包(仅限零售电商行业),100条 12个月
短信服务,200条 3个月
短信服务,100条 3个月
简介: 【瑞吉外卖】day08:短信发送、手机验证码登录

4.3.4 设置短信模板


切换到【模板管理】标签页:

image.png

那么什么是模板呢?

短信模板包含短信发送内容、场景、变量信息。模板的详情如下:

image.png

最终我们,给用户发送的短信中,具体的短信内容,就是上面配置的这个模板内容,将${code}占位符替换成对应的验证码数据即可。如下:

<spanstyle="background-color:#f8f8f8"><spanstyle="color:#333333">【xxxxx】您好,您的验证码为173822,5分钟之内有效,不要泄露给他人!</span></span>

我们可以点击右上角的按钮,添加模板,然后填写模板的基本信息及设置的模板内容:

image.png

添加的短信模板,也是需要进行审核的只有审核通过,才可以正常使用。

4.3.5 设置AccessKey


AccessKey 是访问阿里云 API 的密钥,具有账户的完全权限,我们要想在后面通过API调用阿里云短信服务的接口发送短信,那么就必须要设置AccessKey。

我们点击右上角的用户头像,选择"AccessKey管理",这时就可以进入到AccessKey的管理界面。

image.png

进入到AccessKey的管理界面之后,提示两个选项 "继续使用AccessKey" 和 "开始使用子用户AccessKey",两个区别如下:

1). 继续使用AccessKey

如果选择的是该选项,我们创建的是阿里云账号的AccessKey,是具有账户的完全权限,有了这个AccessKey以后,我们就可以通过API调用阿里云的服务,不仅是短信服务,其他服务(OSS,语音服务,内容安全服务,视频点播服务...等)也可以调用。 相对来说,并不安全,当前的AccessKey泄露,会影响到我当前账户的其他云服务。

2). 开始使用子用户AccessKey

可以创建一个子用户,这个子用户我们可以分配比较低的权限,比如仅分配短信发送的权限,不具备操作其他的服务的权限,即使这个AccessKey泄漏了,也不会影响其他的云服务, 相对安全。

接下来就来演示一下,如何创建子用户AccessKey。

image.png

image.png

4.3.6 配置权限


上述我们已经创建了子用户, 但是这个子用户,目前没有任何权限,接下来,我们需要为创建的这个用户来分配权限。

image.png

经过上述的权限配置之后,那么新创建的这个 reggie 用户,仅有短信服务操作的权限,不具备别的权限,即使当前的AccessKey泄漏了,也只会影响短信服务,其他服务是不受影响的。

4.3.7 禁用/删除AccessKey


如果在使用的过程中 AccessKey 不小心泄漏了,我们可以在阿里云控制台中, 禁用或者删除该AccessKey。

image.png

image.png

==注意: 创建好了AccessKey后,请及时保存AccessKeyId 和 AccessKeySecret ,弹窗关闭后将无法再次获取该信息,但您可以随时创建新的 AccessKey。==

4.4 代码开发


使用阿里云短信服务发送短信,可以参照官方提供的文档即可。

官方文档: 短信服务 - 帮助中心 - 阿里云

image.png

我们根据官方文档的提示,引入对应的依赖,然后再引入对应的java代码,就可以发送消息了。

image.png

SDK : SDK 就是 Software Development Kit 的缩写,翻译过来——软件开发工具包,辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。在我们与第三方接口相互时, 一般都会提供对应的SDK,来简化我们的开发。

具体实现:

1). pom.xml

<spanstyle="background-color:#f8f8f8"><spanstyle="color:#333333"><spanstyle="color:#117700"><</span><spanstyle="color:#117700">dependency</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"><</span><spanstyle="color:#117700">groupId</span><spanstyle="color:#117700">></span><spanstyle="color:var(--select-text-font-color) !important">com.aliyun</span><spanstyle="color:#117700"></</span><spanstyle="color:#117700">groupId</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"><</span><spanstyle="color:#117700">artifactId</span><spanstyle="color:#117700">></span><spanstyle="color:var(--select-text-font-color) !important">aliyun-java-sdk-core</span><spanstyle="color:#117700"></</span><spanstyle="color:#117700">artifactId</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"><</span><spanstyle="color:#117700">version</span><spanstyle="color:#117700">></span><spanstyle="color:var(--select-text-font-color) !important">4.5.16</span><spanstyle="color:#117700"></</span><spanstyle="color:#117700">version</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"></</span><spanstyle="color:#117700">dependency</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"><</span><spanstyle="color:#117700">dependency</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"><</span><spanstyle="color:#117700">groupId</span><spanstyle="color:#117700">></span><spanstyle="color:var(--select-text-font-color) !important">com.aliyun</span><spanstyle="color:#117700"></</span><spanstyle="color:#117700">groupId</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"><</span><spanstyle="color:#117700">artifactId</span><spanstyle="color:#117700">></span><spanstyle="color:var(--select-text-font-color) !important">aliyun-java-sdk-dysmsapi</span><spanstyle="color:#117700"></</span><spanstyle="color:#117700">artifactId</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"><</span><spanstyle="color:#117700">version</span><spanstyle="color:#117700">></span><spanstyle="color:var(--select-text-font-color) !important">2.1.0</span><spanstyle="color:#117700"></</span><spanstyle="color:#117700">version</span><spanstyle="color:#117700">></span><spanstyle="color:#117700"></</span><spanstyle="color:#117700">dependency</span><spanstyle="color:#117700">></span></span></span>

2). 将官方提供的main方法封装为一个工具类

<spanstyle="background-color:#f8f8f8"><spanstyle="color:#333333"><spanstyle="color:#770088">import</span><spanstyle="color:#000000">com</span>.<spanstyle="color:#000000">aliyuncs</span>.<spanstyle="color:#000000">DefaultAcsClient</span>;
<spanstyle="color:#770088">import</span><spanstyle="color:#000000">com</span>.<spanstyle="color:#000000">aliyuncs</span>.<spanstyle="color:#000000">IAcsClient</span>;
<spanstyle="color:#770088">import</span><spanstyle="color:#000000">com</span>.<spanstyle="color:#000000">aliyuncs</span>.<spanstyle="color:#000000">dysmsapi</span>.<spanstyle="color:#000000">model</span>.<spanstyle="color:#000000">v20170525</span>.<spanstyle="color:#000000">SendSmsRequest</span>;
<spanstyle="color:#770088">import</span><spanstyle="color:#000000">com</span>.<spanstyle="color:#000000">aliyuncs</span>.<spanstyle="color:#000000">dysmsapi</span>.<spanstyle="color:#000000">model</span>.<spanstyle="color:#000000">v20170525</span>.<spanstyle="color:#000000">SendSmsResponse</span>;
<spanstyle="color:#770088">import</span><spanstyle="color:#000000">com</span>.<spanstyle="color:#000000">aliyuncs</span>.<spanstyle="color:#000000">exceptions</span>.<spanstyle="color:#000000">ClientException</span>;
<spanstyle="color:#770088">import</span><spanstyle="color:#000000">com</span>.<spanstyle="color:#000000">aliyuncs</span>.<spanstyle="color:#000000">profile</span>.<spanstyle="color:#000000">DefaultProfile</span>;
<spanstyle="color:#aa5500">/**</span><span style="color:#aa5500">* 短信发送工具类</span><span style="color:#aa5500">*/</span><spanstyle="color:#770088">public</span><spanstyle="color:#770088">class</span><spanstyle="color:#0000ff">SMSUtils</span> {
<spanstyle="color:#aa5500">/**</span><span style="color:#aa5500">* 发送短信</span><span style="color:#aa5500">* @param signName 签名</span><span style="color:#aa5500">* @param templateCode 模板</span><span style="color:#aa5500">* @param phoneNumbers 手机号</span><span style="color:#aa5500">* @param param 参数</span><span style="color:#aa5500">*/</span><spanstyle="color:#770088">public</span><spanstyle="color:#770088">static</span><spanstyle="color:#008855">void</span><spanstyle="color:#000000">sendMessage</span>(<spanstyle="color:#008855">String</span><spanstyle="color:#000000">signName</span>, <spanstyle="color:#008855">String</span><spanstyle="color:#000000">templateCode</span>,<spanstyle="color:#008855">String</span><spanstyle="color:#000000">phoneNumbers</span>,<spanstyle="color:#008855">String</span><spanstyle="color:#000000">param</span>){
<spanstyle="color:#000000">DefaultProfile</span><spanstyle="color:#000000">profile</span><spanstyle="color:#981a1a">=</span><spanstyle="color:#000000">DefaultProfile</span>.<spanstyle="color:#000000">getProfile</span>(<spanstyle="color:#aa1111">"cn-hangzhou"</span>, <spanstyle="color:#aa1111">"xxxxxxxxxxxxxxxx"</span>, <spanstyle="color:#aa1111">"xxxxxxxxxxxxxx"</span>);
<spanstyle="color:#000000">IAcsClient</span><spanstyle="color:#000000">client</span><spanstyle="color:#981a1a">=</span><spanstyle="color:#770088">new</span><spanstyle="color:#000000">DefaultAcsClient</span>(<spanstyle="color:#000000">profile</span>);
<spanstyle="color:#000000">SendSmsRequest</span><spanstyle="color:#000000">request</span><spanstyle="color:#981a1a">=</span><spanstyle="color:#770088">new</span><spanstyle="color:#000000">SendSmsRequest</span>();
<spanstyle="color:#000000">request</span>.<spanstyle="color:#000000">setSysRegionId</span>(<spanstyle="color:#aa1111">"cn-hangzhou"</span>);
<spanstyle="color:#000000">request</span>.<spanstyle="color:#000000">setPhoneNumbers</span>(<spanstyle="color:#000000">phoneNumbers</span>);
<spanstyle="color:#000000">request</span>.<spanstyle="color:#000000">setSignName</span>(<spanstyle="color:#000000">signName</span>);
<spanstyle="color:#000000">request</span>.<spanstyle="color:#000000">setTemplateCode</span>(<spanstyle="color:#000000">templateCode</span>);
<spanstyle="color:#000000">request</span>.<spanstyle="color:#000000">setTemplateParam</span>(<spanstyle="color:#aa1111">"{\"code\":\""</span><spanstyle="color:#981a1a">+</span><spanstyle="color:#000000">param</span><spanstyle="color:#981a1a">+</span><spanstyle="color:#aa1111">"\"}"</span>);
<spanstyle="color:#770088">try</span> {
<spanstyle="color:#000000">SendSmsResponse</span><spanstyle="color:#000000">response</span><spanstyle="color:#981a1a">=</span><spanstyle="color:#000000">client</span>.<spanstyle="color:#000000">getAcsResponse</span>(<spanstyle="color:#000000">request</span>);
<spanstyle="color:#000000">System</span>.<spanstyle="color:#000000">out</span>.<spanstyle="color:#000000">println</span>(<spanstyle="color:#aa1111">"短信发送成功"</span>);
      }<spanstyle="color:#770088">catch</span> (<spanstyle="color:#000000">ClientException</span><spanstyle="color:#000000">e</span>) {
<spanstyle="color:#000000">e</span>.<spanstyle="color:#000000">printStackTrace</span>();
      }
   }
}</span></span>

备注 : 由于我们个人目前无法申请阿里云短信服务,所以这里我们只需要把流程跑通,具体的短信发送可以实现。

5. 手机验证码登录


5.1 需求分析


为了方便用户登录,移动端通常都会提供通过手机验证码登录的功能。手机验证码登录有如下优点:

1). 方便快捷,无需注册,直接登录

2). 使用短信验证码作为登录凭证,无需记忆密码

3). 安全

image.png

登录流程:

输入手机号 > 获取验证码 > 输入验证码 > 点击登录 > 登录成功

注意:通过手机验证码登录,手机号是区分不同用户的标识。

相关文章
|
5月前
|
数据采集 监控 安全
阿里云短信服务+图形认证,有效降低验证码盗刷概率
阿里云短信服务+图形认证服务,有效降低验证码盗刷概率。
449 3
阿里云短信服务+图形认证,有效降低验证码盗刷概率
|
15天前
|
缓存 前端开发 IDE
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
20 0
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
安全 算法 机器人
双重防护!红娘相亲app搭建开发,婚恋交友系统登录方式,密码+验证码的优势
在婚恋交友系统中,密码和验证码是两种重要的安全措施。密码用于验证用户身份,应设置为复杂组合以防止未经授权的访问;验证码则通过图形或字符识别,防止自动化攻击如暴力破解和注册机器人。两者同时开启可显著提高安全性,防止暴力破解和自动化注册,提升用户信任感。建议要求强密码、定期更新验证码样式,并在可疑登录时增加验证码复杂性。这样既能保障用户信息安全,又兼顾了用户体验。 ![交友11111.jpg](https://ucc.alicdn.com/pic/developer-ecology/hy2p6wcvgk4oe_c9eb8d6eb8144866b0cd1d96ffb0c907.jpg)
|
3月前
|
Android开发 数据安全/隐私保护 虚拟化
安卓手机远程连接登录Windows服务器教程
安卓手机远程连接登录Windows服务器教程
462 4
|
4月前
Discuz! X3.5插件云诺-阿里云短信手机登录 会员登录后也无法查看附件图片的问题解决方法
Discuz! X3.5插件云诺-阿里云短信手机登录 会员登录后也无法查看附件图片的问题解决方法
54 2
|
4月前
|
安全 API PHP
港澳台验证码海外短信群发教程,利用阿里云国际如何实现境外短信操作
港澳台验证码海外短信群发教程,利用阿里云国际如何实现境外短信操作
|
4月前
|
SQL 存储 数据可视化
手机短信SQL分析技巧与方法
在手机短信应用中,SQL分析扮演着至关重要的角色
|
4月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
143 2
|
4月前
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
51 1
|
6月前
|
资源调度 JavaScript API
nest.js + sms 实现短信验证码登录
本文介绍了在Nest.js框架中集成短信验证码登录的实现方案,详细阐述了使用阿里云短信服务的配置流程、资质申请、短信模板设置,并提供了API调用示例和工程代码的运行步骤。
nest.js + sms 实现短信验证码登录

热门文章

最新文章