日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里短信服务集成

發(fā)布時(shí)間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里短信服务集成 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

技術(shù)分享交流群:1125844267,大家可以進(jìn)來嘮嗑閑聊

前言

目前阿里短信不支持個(gè)人申請(qǐng)簽名和模板,所以只能使用測(cè)試版固定的簽名和模板


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、控制臺(tái)配置

1、進(jìn)入阿里云官網(wǎng),搜索“短信服務(wù)”進(jìn)行購買

2、配置用戶組和用戶,獲取AccessKey ID和AccessKey Secret


我們當(dāng)然可以直接使用第一個(gè)“繼續(xù)使用AccessKey”來直接創(chuàng)建AccessKey,但是為了安全(人家也有安全提示),所以咱就聽話使用第二個(gè)。點(diǎn)擊進(jìn)入后配置用戶組,添加關(guān)于短信的權(quán)限,然后添加一個(gè)用戶,屬于短信這個(gè)用戶組,這個(gè)用戶就自動(dòng)擁有的用戶組所擁有的短信權(quán)限。

創(chuàng)建用戶的時(shí)候一定要記得勾選這個(gè),并且記下來AccessKey Secret,因?yàn)橹伙@示一次,之后就沒了。

二、代碼實(shí)現(xiàn)

上邊直接點(diǎn)擊進(jìn)去就有阿里提供的各種語言的發(fā)送短信的代碼

它有一個(gè)同步的代碼和一個(gè)異步的代碼,異步的按它的代碼放到項(xiàng)目中報(bào)錯(cuò),所以直接用的同步的

<dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.9</version></dependency> /*** 發(fā)送短信工具類*/ public class SendSMS {/*** 使用AK&SK初始化賬號(hào)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); //生成四位數(shù)字的驗(yàn)證碼 com.aliyun.dysmsapi20170525.Client client = SendSMS.createClient(accessKeyId, accessKeySecret); //參數(shù)用你真實(shí)的替換SendSmsRequest sendSmsRequest = new SendSmsRequest().setSignName("阿里云短信測(cè)試") //簽名,測(cè)試只能這么寫.setTemplateCode("SMS_154950909") //測(cè)試模板(固定).setPhoneNumbers(phone) //手機(jī)號(hào).setTemplateParam("{\"code\":\""+code+"\"}");// 復(fù)制代碼運(yùn)行請(qǐng)自行打印 API 的返回值SendSmsResponse result = client.sendSms(sendSmsRequest);log.info("短信登錄API返回的狀態(tài)碼描述:{}",result.getBody().getMessage());if("OK".equalsIgnoreCase(result.getBody().getCode())){ //OK表明發(fā)送成功,將驗(yàn)證碼保存到redis,設(shè)置過期時(shí)間為5分鐘redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);return ResultData.success(messageUtil.message("messages.codeLoginTip1")); //根據(jù)自己的實(shí)際返回}else {return ResultData.error(messageUtil.message("messages.codeLoginTip2")); //根據(jù)自己的實(shí)際返回}

驗(yàn)證的時(shí)候從redis中取出對(duì)應(yīng)手機(jī)號(hào)的驗(yàn)證碼。我這是集成到Oauth2中的短信登錄,參數(shù)獲取可能不太一樣,但是驗(yàn)證邏輯肯定都是一樣的

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("該手機(jī)號(hào)不是系統(tǒng)注冊(cè)用戶");throw new SessionAuthenticationException("messages.codeLoginTip1");}if(StringUtils.isEmpty(mobile)){//throw new SessionAuthenticationException("手機(jī)號(hào)不能為空");throw new SessionAuthenticationException("messages.codeLoginTip2");}if(StringUtils.isEmpty(codeRequest)){//throw new SessionAuthenticationException("短信驗(yàn)證碼不能為空");throw new SessionAuthenticationException("messages.codeLoginTip3");}if(StringUtils.isEmpty(codeRedis)){//throw new SessionAuthenticationException("短信驗(yàn)證碼已過期");throw new SessionAuthenticationException("messages.codeLoginTip4");}if(!codeRequest.equals(codeRedis)){//throw new SessionAuthenticationException("短信驗(yàn)證碼不正確");throw new SessionAuthenticationException("messages.codeLoginTip5");}

總結(jié)

以上是生活随笔為你收集整理的阿里短信服务集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。