阿里短信服务集成
技術(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ò),所以直接用的同步的
驗(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é)
- 上一篇: B. Kay and Snowflake
- 下一篇: 基于三点说构成的夹角提取特征点