短信验证码的实现(阿里云)

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

前言

背景:目前在很多项目中都出现使用短信验证码来实现注册、登录、购买、支付、转账等功能,发短信功能几乎已经成为项目中不可或缺的技术之一。

一、短信验证码的基本步骤

  1. 选择一个合适的编程语言,例如Python、Java或PHP等。
  2. 寻找能够发送短信的API,例如Twilio、阿里云短信等。
  3. 注册并获取API的账号和认证信息(如API密钥或令牌)。
  4. 根据API文档中所述,构建发送短信验证码的请求。通常需要设置接收者手机的手机号码和短信内容等参数。
  5. 调用API发送请求,并解析API返回的响应结果,以检查短信是否发送成功。

写代码时需要特别注意短信验证码的安全性,例如防止短信轰炸、重复发送或被恶意利用等问题。

二、阿里云短信验证

1.注册阿里云账号

阿里云短信验证,短信验证,阿里云,java,云计算,安全

2.点击右上角的控制台后,搜索短信服务

阿里云短信验证,短信验证,阿里云,java,云计算,安全

3.申请签名

阿里云短信验证,短信验证,阿里云,java,云计算,安全

添加签名

阿里云短信验证,短信验证,阿里云,java,云计算,安全

4.申请模板

短信模板包含短信发送内容、场景、变量信息

阿里云短信验证,短信验证,阿里云,java,云计算,安全
添加模板:

阿里云短信验证,短信验证,阿里云,java,云计算,安全
申请后的模板详情:
阿里云短信验证,短信验证,阿里云,java,云计算,安全
申请签名和申请模板都需要人工审核的,一般1到2个工作日,其实还是挺快的。

5.设置AccessKey

相当于用户名的密码(自己记住和使用)
将鼠标移到右上角的头像,就会弹出以下对话框:
阿里云短信验证,短信验证,阿里云,java,云计算,安全
妥善保管好自己的AccessKey的密码,一旦泄漏出去,别人使用你的短信验证,耗费自己的费用。
阿里云短信验证,短信验证,阿里云,java,云计算,安全

创建自己的用户

阿里云短信验证,短信验证,阿里云,java,云计算,安全
勾选openApI调用,相当于使用编程访问
创建好后,显示AccessKeyID和AccessKey Secrect,将密码保存到自己找的到的地方,方便后续使用。
官方提示:若开通 OpenAPI 调用访问,请及时保存 AccessKey 信息,页面关闭后将无法再次获取信息。

阿里云短信验证,短信验证,阿里云,java,云计算,安全

设置权限

阿里云短信验证,短信验证,阿里云,java,云计算,安全

点击新增授权

阿里云短信验证,短信验证,阿里云,java,云计算,安全
这两个权限是如果你的AccessKey泄漏出去了,别人也只能调用你短信验证的功能,不能使用其他的功能。
如果你不使用了,或者泄漏出去了,你也可以把AccessKey禁用或者删除。

三、导入依赖坐标

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-core</artifactId>
	<version>4.6.3</version>
</dependency>
<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
	<version>2.2.1</version>
</dependency>

四、调用API

可以在文档帮助中心找相应语言的SDK,可以将代码改造一下,通过Api就可以调用短信验证服务了。
阿里云短信验证,短信验证,阿里云,java,云计算,安全文章来源地址https://www.toymoban.com/news/detail-607173.html

/**
 * 短信发送工具类
 */
public class SMSUtils {

	/**
	 * 发送短信
	 * @param signName 签名
	 * @param templateCode 模板
	 * @param phoneNumbers 手机号
	 * @param param 参数
	 */
public static void sendMessage(String signName, String templateCode,String phoneNumbers,String param){
	DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");
	//getProfile(地域编码,AccessKeyId,AccessKeySecret)
	IAcsClient client = new DefaultAcsClient(profile);

	SendSmsRequest request = new SendSmsRequest();
	request.setSysRegionId("cn-hangzhou");//设置地域编码
	request.setPhoneNumbers(phoneNumbers);
	request.setSignName(signName);
	request.setTemplateCode(templateCode);
	request.setTemplateParam("{\"code\":\""+param+"\"}");
	try {
	 SendSmsResponse response = client.getAcsResponse(request);
	 System.out.println("短信发送成功");
	}catch (ClientException e) {
		e.printStackTrace();
	   }
	}
}

五、随机生成验证码工具类

/**
 * 随机生成验证码工具类
 */
public class ValidateCodeUtils {
    /**
     * 随机生成验证码
     * @param length 长度为4位或者6位
     * @return
     */
    public static Integer generateValidateCode(int length){
        Integer code =null;
        if(length == 4){
            code = new Random().nextInt(9999);//生成随机数,最大为9999
            if(code < 1000){
                code = code + 1000;//保证随机数为4位数字
            }
        }else if(length == 6){
            code = new Random().nextInt(999999);//生成随机数,最大为999999
            if(code < 100000){
                code = code + 100000;//保证随机数为6位数字
            }
        }else{
            throw new RuntimeException("只能生成4位或6位数字验证码");
        }
        return code;
    }

    /**
     * 随机生成指定长度字符串验证码
     * @param length 长度
     * @return
     */
    public static String generateValidateCode4String(int length){
        Random rdm = new Random();
        String hash1 = Integer.toHexString(rdm.nextInt());
        String capstr = hash1.substring(0, length);
        return capstr;
    }
}

六、发送请求调用

  @PostMapping("/sendMsg")
    public R<String> sendMsg(@RequestBody User user, HttpSession session){
        //获取手机号
        String phone = user.getPhone();
        if (StringUtils.isNotEmpty(phone)){
            //生成随机的4位验证码
         String code = ValidateCodeUtils.generateValidateCode(4).toString();
            log.info("code={}",code);
            //调用阿里云提供的短信服务api完成发送短信
//            SMSUtils.sendMessage("模板签名","模板id",phone,code);

            //需要将生成的验证码保存到Session
            session.setAttribute(phone,code);

            return R.success("手机短信验证码发送成功");
        }

        return R.error("短信发送失败");
    }

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

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

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

相关文章

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

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

    2024年02月04日
    浏览(42)
  • 短信验证码—Java实现

    在业务需求中我们经常会用到短信验证码,比如手机号登录、绑定手机号、忘记密码、敏感操作等,都可以通过短信验证码来保证操作的安全性,于是就记录下了一次开发的过程。 发送短信是一个比较慢的过程,因为需要用到第三方服务(腾讯云短信服务),因此我们 使用

    2024年02月09日
    浏览(26)
  • 让你的Demo更安全--Spring Boot实现短信验证码

    随着移动互联网的普及,短信验证码已经成为了很多应用的常用登录和注册方式之一。在传统的应用中,我们一般使用第三方集成商提供的短信验证码服务来实现短信验证码的发送和验证,但是这些服务有可能存在时间限制、价格过高等限制。 为了解决这些问题,我们可以使

    2024年02月07日
    浏览(29)
  • java 阿里云 发送短信功能实现

            常用短信服务平台:阿里云、华为云、腾讯云、京东、梦网、乐信等         AccessKey 是访问阿里云 API 的密钥,具有账户的完全权限,我们要想在后面通过API调用阿里云短信服务的接口发送短信,那么就必须要设置AccessKey。         控制台页面---点击右上

    2024年02月02日
    浏览(38)
  • 详解织梦dedecms短信验证码功能(阿里短信)

    现在大部分网站都需要用短信验证码,因为织梦官方没有短信验证码插件,所以写了几个短信验证码插件,一个使用的是阿里云的短信验证码接口,一个使用的是阿里大于的短信验证码接口,一个使用的是阿里通信短信验证码接口,另外一个使用的是云之讯的短信接口。下面

    2024年02月02日
    浏览(34)
  • 阿里云短信验证码实战

    一、创建阿里云短信权限用户 1、登陆阿里云之后我们点击头像,接着点击AccessKey: 2、选择开始使用子用户 : 3、我们先要创建一个用户组: 4、依次点击新建的用户组——授权管理,给用户组授权,开通短信验证码服务: 5、接着我们新建一个用户(具体用来操作的账号),

    2023年04月22日
    浏览(33)
  • springboot集成阿里云短信验证码

    1.添加pom.xml依赖 2.application.yml添加配置文件 3.创建随机验证码工具类 4.创建发送验证码工具类 注意事项 :在 application.yml 中配置了 accessKeyID等参数 ,想在一个工具类里面的静态方法使用,于是使用了静态变量。使用 @Value 注解获取值,如下: debug发现获取不到,为 null 。原因

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

    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日
    浏览(37)
  • 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)

    前置:需要腾讯云的账号,后期授权需要,不需要买云服务器,有需要的可以购买短信套餐(几块钱) 搜索框输入短信,可以买一个短信套餐包,便宜不贵,进入短信服务的控制台 发送短信有频率限制,企业用户可以修改设置 之后我们需要对短信内容进行设置      类型有网站

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

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

    2024年02月15日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包