阿里云短信验证码实战

这篇具有很好参考价值的文章主要介绍了阿里云短信验证码实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、创建阿里云短信权限用户

1、登陆阿里云之后我们点击头像,接着点击AccessKey:
阿里云短信验证码实战

2、选择开始使用子用户 :
阿里云短信验证码实战

3、我们先要创建一个用户组:
阿里云短信验证码实战

4、依次点击新建的用户组——授权管理,给用户组授权,开通短信验证码服务:
阿里云短信验证码实战
5、接着我们新建一个用户(具体用来操作的账号),一定要勾选OpenAPI调用访问,这样我们才能通过代码访问:
阿里云短信验证码实战
记得把AccessKey保存下来,以为后面会看不到:
阿里云短信验证码实战

6、接着将这个用户添加到刚刚的用户组即可:
阿里云短信验证码实战

二、开通阿里云短信服务

1、在搜索框搜索短信服务,点击加载之后,选择免费开通,即可开通短信服务。

2、我们开通短信服务之后,还要设置签名和模板:
阿里云短信验证码实战

签名就相当于公司名称,模板就是短信的模板,验证码短信分为几部分:
阿里云短信验证码实战

默认会给我们设置一个模板,我们可以直接用这个模板(注意:模板一定要和某个签名绑定,否则发送不了验证码):
阿里云短信验证码实战

但是没有默认的签名,我们需要自己添加,申请里有一定要有理有据,比较正当,等待审核通过即可:
阿里云短信验证码实战

可以在快速学习和测试模块,体验一下短信验证码的使用:
阿里云短信验证码实战

这一块也会有实现短信验证码功能的代码:
阿里云短信验证码实战

三、编写测试代码

我们可以在帮助文档中查看具体的使用步骤:帮助文档

1、首先在项目中导入Java SDK的依赖:

<!--阿里云短信验证码sdk-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.16</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>
			
			<!--springboot集成redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

然后编写一个测试类来测试是否能正常发送验证码:

//连接阿里云
        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "Your AccessKey ID", "Your AccessKey Secret");
        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("PhoneNumbers","xxxx"); //手机号
        request.putQueryParameter("SignName","xxxx"); //申请阿里云 签名名称
        request.putQueryParameter("TemplateCode","xxxxx"); //申请阿里云 模板code

        HashMap<String, Object> map = new HashMap<>();
        map.put("code", 123456);
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));//验证码数据,转换json数据传递

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

测试代码写完之后我们就可以执行这段代码进行测试了,结果成功!

四、封装发送短信接口

1、编写Service接口:

public interface SendSms {
    //手机号、模板代码、验证码
    public boolean send(String phoneNum, String templateCode, Map<String, Object> code);
}

2、编写接口实现类:

@Service
public class SendSmsImpl implements SendSms {
    @Override
    public boolean send(String phoneNum, String templateCode, Map<String, Object> code) {
        //连接阿里云
        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tMk6A312KwNVnxNuTno", "1MyEwE0uqfHYTFyFAcydutAFBZgGBj");
        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("PhoneNumbers",phoneNum); //手机号
        request.putQueryParameter("SignName","唐世华个人签名"); //申请阿里云 签名名称
        request.putQueryParameter("TemplateCode",templateCode); //申请阿里云 模板code


        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));//验证码数据,转换json数据传递,这里要用map

        try{
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
            return response.getHttpResponse().isSuccess();  //判断发送是否成功
        } catch (ClientException e){
            e.printStackTrace();
        }
        return false;
    }
}

3、编写Controller测试类:

@RestController
@CrossOrigin  //跨域支持
public class SendSmsController {

    @Autowired
    private SendSms sendSms;

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @GetMapping("/send/{phone}")
    public String code(@PathVariable("phone") String phone){
        //调用方法模拟真实业务
        //如果redis缓存中存在手机号的验证码,说明验证码还未过期,可继续使用
        String code = redisTemplate.opsForValue().get(phone);
        System.out.println(code);
        if(!StringUtils.isEmpty(code)){
            return phone + ":" + code + "已存在,还没有过期,可继续使用!";
        }

        //生成验证码并存储到redis中
        //生成验证码(包含数字和字母)
        //code = UUID.randomUUID().toString().substring(0, 4);

        //生成纯数字
        int uuid = UUID.randomUUID().toString().replaceAll("-","").hashCode();
        uuid = uuid < 0 ? -uuid : uuid;//String.hashCode() 值会为空
        code = String.valueOf(uuid).substring(0, 4);

        HashMap<String, Object> param = new HashMap<>();
        param.put("code", code);

        boolean isSend = sendSms.send(phone, "SMS_274310067", param);  //发送验证码

        if(isSend){ //发送成功
            redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.SECONDS);  //将验证码存到redis,设置5分钟过期
            return phone + ":" + code + "发送成功!";
        }else {
            return "发送失败";
        }

    }

}

完结撒花!!文章来源地址https://www.toymoban.com/news/detail-421316.html

到了这里,关于阿里云短信验证码实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码

    阿里云官网: https://www.aliyun.com/ 点击官网首页注册按钮。 注册成功后,点击登录按钮进行登录。登录后进入短信服务管理页面,选择国内消息菜单: 短信签名是短信发送者的署名,表示发送方的身份。 切换到【模板管理】标签页: 短信模板包含短信发送内容、场景、变量信息

    2024年02月02日
    浏览(53)
  • 在阿里云请求发短信接口去掉证书验证

    composer require alibabacloud/dysmsapi-20170525 2.0.23   cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://dysmsapi.aliyuncs.com/?PhoneNumbers= 两种方法 第一个直接关闭验证 vendorguzzlehttpguzzlesrcHandlerCurlFactory.php 362行 $conf[CURLOPT_S

    2024年02月10日
    浏览(49)
  • 阿里云 短信服务——开启验证码防盗刷监控

    由于公司的业务要求,目前正在了解并运用阿里云的短信服务。 在短信服务这儿块由于涉及到每条短信都需要花费一定的费用,以及每条短信都会与用户进行信息交互,所以在这块儿的别需要注重短信的安全问题。本篇博客主要介绍阿里云短信服务如何开启验证码防盗刷监控

    2024年02月05日
    浏览(38)
  • 【Springboot】| 阿里云发送短信验证码,你会了吗?

    专栏 名字 🔥Elasticsearch专栏 es 🔥spring专栏 spring开发 redis专栏 redis学习笔记 🔥项目专栏 项目集锦 修bug专栏 bug修理厂 狮子之前发了一篇《邮箱发送验证码,你会了吗?》,很快上了热度榜单,但是那篇文章只是简单介绍了如何接收验证码的流程以及安利了一个接收验证码的

    2024年02月08日
    浏览(43)
  • TP6----------阿里云短信包验证码登录

    首先开通阿里云短信包,之后申请短信包签名,这里大家自行去阿里云申请 安装阿里云sdk 首先创建Sample类方便调用,我们需要有短信签名,签名模板,阿里云keyId和accessKeySecret 阿里云key在阿里云首页,右上角有个acesskey管理就可以看到 Sample.php文件 业务逻辑层生成随机验证码

    2024年02月15日
    浏览(66)
  • 图形验证码+短信验证码实战

    上一篇分分享了基于阿里云实现的短信验证码文章,考虑到为了防止登录时,非人工操作,频繁获取验证码,趁热打铁,现在添加了图片验证码服务功能。借鉴网上传统的做法,把实现这两个验证的功能做成有个独立的服务,通过Http分别请求获取校验图片验证码和短信验证码

    2024年02月13日
    浏览(50)
  • 【SpringBoot+MP】阿里云短信测试服务操作流程、用户手机验证码登录实现

    前面是站在后台员工的角度,现在站在消费者的角度,当客户从移动端选择通过验证码登录APP,需要调用云服务器的短信功能(厂商短信服务API) ,后端要做的就是生成验证码并发送,并针对请求中客户收到的验证码与后端发送的进行比对,确保一致后成功登录。 首先针对

    2024年02月02日
    浏览(41)
  • 【账号系统之(手机验证码登录)】使用阿里云短信服务,实现服务商给手机发送验证码功能。

    目录 一、前言 二、前期准备 三、购买短信服务 四、申请签名和模板 (1) 进入阿里云短信服务控制台 (2) 添加签名 (3) 添加模板 五、RAM申请及权限配置 (1) 进入RAM访问控制界面 (2) 创建用户 (3) 分配权限 (4) 创建角色 (5) 记录段的值 六、阿里云.NET SDK身份验证接入 (1) 了解

    2024年02月04日
    浏览(54)
  • 阿里云短信服务实战教程

      短信服务有很多的使用场景,比如注册获取验证码,购票成功发送购票通知。目前很多头部运营商已经提供了相关服务,比如阿里云,腾讯云等,这里以阿里云短信服务为例。   阿里云的短信服务是需要购买的,并且每条短信是计费的这个可以在阿里云看到,都有详细

    2024年02月11日
    浏览(46)
  • redis实战-项目集成git及redis实现短信验证码登录

    目录     IDEA集成git 传统session存在的问题  redis方案 业务流程 选用的数据结构 整体访问流程 发送短信验证码  获取校验验证码 配置登录拦截器 拦截器注册配置类 拦截器 用户状态刷新问题 刷新问题解决方案   远程仓库采用码云,创建好仓库,复制仓库的url    在idea中点

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包