栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot 阿里云短信平台手机验证码测试

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot 阿里云短信平台手机验证码测试

    登录阿里云搜索短信服务配置签名设置短信模板启动Redis创建 Spring Boot 工程
1. 导入依赖

  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

2. 配置类
@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 jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        //将自定的RedisTemplate注入到容器中
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

    @Bean
    public ValueOperations valueOperations(RedisTemplate redisTemplate) {
        return redisTemplate.opsForValue();
    }


    @Bean
    public ListOperations listOperations(RedisTemplate redisTemplate) {
        return redisTemplate.opsForList();
    }

    @Bean
    public SetOperations setOperations(RedisTemplate redisTemplate) {
        return redisTemplate.opsForSet();
    }


    @Bean
    public ZSetOperations zSetOperations(RedisTemplate redisTemplate) {
        return redisTemplate.opsForZSet();
    }

    @Bean
    public HashOperations hashOperations(RedisTemplate redisTemplate) {
        return redisTemplate.opsForHash();
    }
}



转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号