- 登录阿里云搜索短信服务配置签名设置短信模板启动Redis创建 Spring Boot 工程
2. 配置类com.aliyun aliyun-java-sdk-core 4.5.16 com.aliyun aliyun-java-sdk-dysmsapi 1.1.0 cn.hutool hutool-all org.springframework.boot spring-boot-starter-data-redis
@Configuration
public class AliyunMsgConfig {
@Resource
MsgProperites msgProperites;
@Bean
public IAcsClient iAcsClient() throws ClientException {
DefaultProfile profile = DefaultProfile.getProfile(msgProperites.getRegionId(), msgProperites.getAccessKeyId(), msgProperites.getAccessKeySecret());
IAcsClient client = new DefaultAcsClient(profile);
return client;
}
}
3. 配置属性类
@Data
@Component
@ConfigurationProperties("aliyun.msg")
public class MsgProperites {
private String regionId;
private String accessKeyId;
private String accessKeySecret;
private String signName;
private String templateCode;
}
4. 配置文件
aliyun:
msg:
# "cn-beijing"
regionid: "cn-hangzhou"
access-key-id: ""
access-key-secret: ""
sign-name: ""
template-code:
spring:
redis:
host:
port: 6379
database: 1
password: ""
# s 表示 m 分钟 h 小时 d 天
timeout: 3s
jedis:
pool:
# 最大连接数
max-active: 10
# 连接池最大存活数
max-idle: 8
# 连接池最小存活数
min-idle: 2
5. 业务层
发送短信
@Service
public class MsgServiceImpl implements MsgService {
public static final String PREFIX_REDIS_KEY = "msg:phone:";
@Resource
MsgProperites msgProperites;
@Resource
IAcsClient client;
@Resource
ValueOperations valueOperations;
@Resource
ObjectMapper objectMapper;
@Override
public String sendMsg(String phone) {
String number = RandomUtil.randomNumbers(6);
MsgTemplateParam msgTemplateParam = new MsgTemplateParam();
msgTemplateParam.setCode(number);
SendSmsRequest request = new SendSmsRequest();
request.setPhoneNumbers(phone);
request.setSignName(msgProperites.getSignName());
request.setTemplateCode(msgProperites.getTemplateCode());
try {
request.setTemplateParam(objectMapper.writevalueAsString(msgTemplateParam));
SendSmsResponse response = client.getAcsResponse(request);
if ("OK".equals(response.getCode())) {
valueOperations.set(PREFIX_REDIS_KEY + phone, number, Duration.ofMinutes(5));
}
} catch (ClientException | JsonProcessingException e) {
}
return "success";
}
}
6.验证码
@Data
public class MsgTemplateParam {
private String code;
}
7. 用户业务层
验证码
- 获取验证码删除验证码
@Service
public class UserServiceImpl implements UserService {
@Resource
ValueOperations valueOperations;
@Resource
RedisTemplate redisTemplate;
@Override
public String login(String phone, String code) {
String tempCode = (String) valueOperations.get(MsgServiceImpl.PREFIX_REDIS_KEY + phone);
if (!ObjectUtils.isEmpty(tempCode) && tempCode.equals(code)) {
//删除键
redisTemplate.delete(MsgServiceImpl.PREFIX_REDIS_KEY + phone);
return "sucess";
}
return null;
}
}
8. Redis 模板
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate<>();
// 用户对象保存
// user:1 user 转化json存redis
// redisTemplate.setKeySerializer();
// redisTemplate.setValueSerializer();
// redisTemplate.setHashKeySerializer();
// redisTemplate.setHashValueSerializer();
// 配置序列化方式
StringRedisSerializer serializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(serializer);
redisTemplate.setHashKeySerializer(serializer);
Jackson2JsonRedisSerializer 


