阿里短信服务集成_阿里短信发送平台

阿里短信服务集成_阿里短信发送平台阿里短信集成,配置流程,代码实现

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

技术分享交流群:1125844267,大家可以进来唠嗑闲聊

前言

目前阿里短信不支持个人申请签名和模板,所以只能使用测试版固定的签名和模板


提示:以下是本篇文章正文内容,下面案例可供参考

一、控制台配置

1、进入阿里云官网,搜索“短信服务”进行购买
在这里插入图片描述
2、配置用户组和用户,获取AccessKey ID和AccessKey Secret
在这里插入图片描述
在这里插入图片描述
我们当然可以直接使用第一个“继续使用AccessKey”来直接创建AccessKey,但是为了安全(人家也有安全提示),所以咱就听话使用第二个。点击进入后配置用户组,添加关于短信的权限,然后添加一个用户,属于短信这个用户组,这个用户就自动拥有的用户组所拥有的短信权限。
在这里插入图片描述
创建用户的时候一定要记得勾选这个,并且记下来AccessKey Secret,因为只显示一次,之后就没了。
在这里插入图片描述

二、代码实现

上边直接点击进去就有阿里提供的各种语言的发送短信的代码
在这里插入图片描述
它有一个同步的代码和一个异步的代码,异步的按它的代码放到项目中报错,所以直接用的同步的

<dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>2.0.9</version>
        </dependency>

Jetbrains全家桶1年46,售后保障稳定

/** * 发送短信工具类 */
public class SendSMS { 
   
    /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */
    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception { 
   
        Config config = new Config()
                // 您的AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    }
}
import org.apache.commons.lang3.RandomStringUtils;
=======================================================

String code = RandomStringUtils.randomNumeric(4);  //生成四位数字的验证码
com.aliyun.dysmsapi20170525.Client client = SendSMS.createClient(accessKeyId, accessKeySecret);  //参数用你真实的替换
                    SendSmsRequest sendSmsRequest = new SendSmsRequest()
                            .setSignName("阿里云短信测试") //签名,测试只能这么写
                            .setTemplateCode("SMS_154950909")  //测试模板(固定)
                            .setPhoneNumbers(phone)  //手机号
                            .setTemplateParam("{\"code\":\""+code+"\"}");
                    // 复制代码运行请自行打印 API 的返回值
                    SendSmsResponse result = client.sendSms(sendSmsRequest);
                    log.info("短信登录API返回的状态码描述:{}",result.getBody().getMessage());
                    if("OK".equalsIgnoreCase(result.getBody().getCode())){ 
    //OK表明发送成功,将验证码保存到redis,设置过期时间为5分钟
                        redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
                        return ResultData.success(messageUtil.message("messages.codeLoginTip1"));  //根据自己的实际返回
                    }else { 
   
                        return ResultData.error(messageUtil.message("messages.codeLoginTip2"));  //根据自己的实际返回
                    }

验证的时候从redis中取出对应手机号的验证码。我这是集成到Oauth2中的短信登录,参数获取可能不太一样,但是验证逻辑肯定都是一样的

String mobile = httpServletRequest.getParameter("mobile");
                String codeRequest = httpServletRequest.getParameter("code");
                String codeRedis = redisTemplate.opsForValue().get(mobile) == null ? "" : String.valueOf(redisTemplate.opsForValue().get(mobile));
                SysUser sysUser = userService.getUserByMobile(mobile);
                if(sysUser == null){ 
   
                    //throw new SessionAuthenticationException("该手机号不是系统注册用户");
                    throw new SessionAuthenticationException("messages.codeLoginTip1");
                }
                if(StringUtils.isEmpty(mobile)){ 
   
                    //throw new SessionAuthenticationException("手机号不能为空");
                    throw new SessionAuthenticationException("messages.codeLoginTip2");
                }
                if(StringUtils.isEmpty(codeRequest)){ 
   
                    //throw new SessionAuthenticationException("短信验证码不能为空");
                    throw new SessionAuthenticationException("messages.codeLoginTip3");
                }
                if(StringUtils.isEmpty(codeRedis)){ 
   
                    //throw new SessionAuthenticationException("短信验证码已过期");
                    throw new SessionAuthenticationException("messages.codeLoginTip4");
                }
                if(!codeRequest.equals(codeRedis)){ 
   
                    //throw new SessionAuthenticationException("短信验证码不正确");
                    throw new SessionAuthenticationException("messages.codeLoginTip5");
                }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213480.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 开机后弹出女神联盟广告_diagnosticservicehost无法启动

    开机后弹出女神联盟广告_diagnosticservicehost无法启动解决WINXP系统开机后弹出Generichostprocessforwin32services遇到问题需要关闭!出现上面这个错误一般有三种情况。1.就是病毒。开机后会提示GenericHostProcessforWin32Services遇到问题需要关闭”“RemoteRrocedureCall(RPC)服务意外终止,然后就自动重起电脑。一般该病毒会…

    2022年10月12日
    3
  • Python基础知识点梳理

    Python基础知识点梳理python常见知识点梳理摘要:本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象。python的详细语法介绍可以查看官方编程手册,也有一些在线网站对python语法进行了比较全面的介绍,比如菜鸟教程:python3教程|菜鸟教程本文主要是介绍基础语法,操作实例在另一篇博客中单独介绍:python语言介绍python是一门解释型语言,python的设计目标:一门…

    2022年6月24日
    26
  • git 删除文件后如何恢复[通俗易懂]

    git 删除文件后如何恢复[通俗易懂]有时候不小心在git中rm了文件。怎么恢复呢?别急,咱们一步步来。首先gitstatus一把,看看此时工作区的状态[xxx@xxxstatic_files]$gitstatus#Onbranchmasternothingtocommit(workingdirectoryclean)可见此时没有任何修改的内容。再看看具体有什么xxx@xxxstatic_files]$

    2022年8月22日
    10
  • smartctl命令详解_smartmontools

    smartctl命令详解_smartmontools安装smartctlubuntu系统安装方法。root@gucloud:~#aptinstallsmartmontoolsReadingpackagelists…DoneBuildingdependencytreeReadingstateinformation…DoneSuggestedpackages:gsmartcontrolsmart-notifiermailx|mailutilsThefollowingNEWp

    2022年10月8日
    3
  • python怎么调用api_python win32api中文手册

    python怎么调用api_python win32api中文手册#1、获得应用窗口句柄hwnd=win32gui.FindWindow(0,“窗口名字”)#2、通过应用窗口句柄获得窗口DChwndDC=win32gui.GetWindowDC(hwnd)#3、通过hwndDC获得mfcDC(注意主窗口用的是win32gui库,操作位图截图是用win32ui库)mfcDC=win32ui.GreateDCFromHandle(hwnd)#4、创建兼容…

    2022年10月11日
    2
  • 什么是Load Average?

    什么是Load Average?运维工程师在日常运维中经常使用w、top、uptime等命令来查看系统当前运行的负载情况。那么作为运维工程师是如何通过以上命令来判断系统当前负载是否已经达到极限了呢?为此笔者总结了一下如何通过load

    2022年7月1日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号