• 短信验证码实现(阿里云)


    如果实现短信验证,上教程,这里用的阿里云短信服务

    短信服务 (aliyun.com)

    进入短信服务后开通就行,可以体验100条免费,刚好测试用

    这里由自定义和专用,测试的话就选择专用吧,自定义要审核,

     SendSms_短信服务_API调试-阿里云OpenAPI开发者门户 (aliyun.com)

    这里是方法api,有对应的教程 

    验证码模板示例

    应用场景模板示例
    登录/验证
    • 您的验证码${code},该验证码5分钟内有效,请勿泄漏于他人!
    • 您的验证码:${code},您正进行身份验证,打死不告诉别人!
    • 验证码为:${code},您正在登录,若非本人操作,请勿泄露。
    注册
    • 您正在申请手机注册,验证码为:${code},5分钟内有效!
    • 尊敬的用户,您的注册会员动态密码为:${code},请勿泄漏于他人!
    • 您的注册码:${code},如非本人操作,请忽略本短信!
    • 您的校验码:${code},您正在注册成为会员,感谢您的支持!
    • 验证码为:${code},您正在注册成为平台会员,感谢您的支持!
    重置密码您的动态码为:${code},您正在进行密码重置操作,如非本人操作,请忽略本短信!
    变更信息验证码为:${code},您正在尝试变更重要信息,请妥善保管账户信息。

    废话就不说了!

    1. <!-- 短信依赖 -->
    2. <dependency>
    3. <groupId>com.aliyun</groupId>
    4. <artifactId>dysmsapi20170525</artifactId>
    5. <version>2.0.24</version>
    6. </dependency>
    1. package com.xiaoyu;
    2. import com.aliyun.dysmsapi20170525.Client;
    3. import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
    4. import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
    5. import com.aliyun.teaopenapi.models.Config;
    6. import java.util.Random;
    7. import java.util.regex.Matcher;
    8. import java.util.regex.Pattern;
    9. public class SendSms {
    10. public static void main(String[] args) throws Exception {
    11. String phoneNumber = "你的手机号";
    12. if (isValidPhoneNumber(phoneNumber)) {
    13. Config config = new Config();
    14. config.setType("access_key"); // 使用AK初始化凭据客户端,还有其他的STS Token、AK及RamRoleArn、ECS实例RAM角色、OIDCRoleArn、URI凭据、Bearer Token(目前只有云呼叫中心CCC这款产品支持Bearer Token的凭据初始化方式)
    15. config.setAccessKeyId("你的AccessKey ID"); // AccessKey ID
    16. config.setAccessKeySecret("你的AccessKey Secret"); // AccessKey Secret
    17. config.endpoint = "dysmsapi.aliyuncs.com";
    18. Client client = new Client(config);
    19. SendSmsRequest request = new SendSmsRequest();
    20. request.setPhoneNumbers(phoneNumber)
    21. .setSignName("阿里云短信测试")//短信签名
    22. .setTemplateCode("SMS_154950909")//短信模板
    23. .setTemplateParam("{\"code\":" + generateVerificationCode() + "}");
    24. SendSmsResponse response = client.sendSms(request);
    25. Integer statusCode = response.getStatusCode();
    26. System.out.println("状态码:" + statusCode); //打印状态码,200成功
    27. } else {
    28. System.out.println("手机号不合法");
    29. }
    30. }
    31. //生成6位数验证码
    32. private static String generateVerificationCode() {
    33. Random random = new Random();
    34. int code = 100000 + random.nextInt(900000); // 生成100000到999999之间的随机数
    35. return String.valueOf(code);
    36. }
    37. //验证手机号
    38. private static boolean isValidPhoneNumber(String phoneNumber) {
    39. // 定义中国大陆手机号的正则表达式
    40. String regex = "^1[3456789]\\d{9}$";
    41. // 编译正则表达式
    42. Pattern pattern = Pattern.compile(regex);
    43. // 创建 Matcher 对象
    44. Matcher matcher = pattern.matcher(phoneNumber);
    45. // 进行匹配并返回结果
    46. return matcher.matches();
    47. }
    48. }

    #这里强调一下,阿里云这里建议使用STS Token比较安全,我这里使用ak初始化非常不安全,不推荐在项目里面这样写

  • 相关阅读:
    数据仓库面试题
    前端开发:JS中==和===的对比总结
    webpack性能优化之打包优化
    fastjson与lombok一起用出现序列化问题
    【Linux】动静态库的使用与软链接的结合
    LC-2316. 统计无向图中无法互相到达点对数(DFS、并查集)
    docker部署tomcat
    LVS集群
    DevOps中集成自动化测试的具体案例
    win10恢复注册表MMC文件夹
  • 原文地址:https://blog.csdn.net/weixin_61189825/article/details/134355741