为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第八天 短信注册与登录

标签:
Java

课程名称:Spring Cloud 进阶 Alibaba 微服务体系自媒体实战
课程章节: 第3章 开发通行证有关服务
主讲老师: 风间影月

课程内容

本课程主要是通过借助阿里云平台,来实现短信发送功能。

内容概述:

  • 短信登录与注册

  • 短信验证码发送与限制


短信注册流程:

  • 用户前端输入手机号。并且对手机号进行格式校验。(格式校验的目的是为了防止重复发送过多短信)

  • 判断60秒内是否发送过短信。

  • 如果发送过,提示用户已经发送过短信,请勿重复点击发送。

  • 如果未发送,则生成对应的短信验证码。

  • 调用阿里云短信服务,实现短信发送功能。

  • 保存验证码,并且限制一定时间失效。

https://img1.sycdn.imooc.com//632091470001242d09840507.jpg

一键登录/注册流程

https://img1.sycdn.imooc.com//632091510001242d09840507.jpg

短信服务

配置密钥与资源

在使用第三方云资源的时候,需要配置秘钥,不论阿里云或者腾讯云,都有这样的操作,具体如下:

resources/aliyun.properties

创建对应的配置类:AliyunResource

@Component
@PropertySource("classpath:aliyun.properties")
@ConfigurationProperties(prefix = "aliyun")
public class AliyunResource {
    private String accessKeyId;
    private String accessKeySecret;

    public String getAccessKeyId() {
        return accessKeyId;
    }

    public void setAccessKeyId(String accessKeyId) {
        this.accessKeyId = accessKeyId;
    }

    public String getAccessKeySecret() {
        return accessKeySecret;
    }

    public void setAccessKeySecret(String accessKeySecret) {
        this.accessKeySecret = accessKeySecret;
    }
}

在common子工程中引入阿里云短信依赖

<dependencies>
    <!-- 第三方云厂商相关的依赖 -->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.0</version>
    </dependency>
</dependencies>

整合并发送短信

阿里云官方提供了短信api,可以直接复制工具类到各自的项目中即可使用。参考如下:
短信工具类:

@Component
public class SMSUtils {

    @Autowired
    public AliyunResource aliyunResource;

    public void sendSMS(String mobile, String code) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou",
                                                aliyunResource.getAccessKeyID(),
                                                aliyunResource.getAccessKeySecret());
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", "cn-hangzhou");

        request.putQueryParameter("PhoneNumbers", mobile);
        request.putQueryParameter("SignName", "风间影月");
        request.putQueryParameter("TemplateCode", "SMS_183761535");
        request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");

        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

课程截屏

https://img1.sycdn.imooc.com//632091720001101b10020577.jpg

https://img1.sycdn.imooc.com//6320918100016d5109370520.jpg

https://img1.sycdn.imooc.com//6320918f00010aad09880537.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1
获赞与收藏
2

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消