• 腾讯云短信验证登录


    提前准备工作

    1.已 注册腾讯云 账号,并完成 企业实名认证

    2.已 购买 短信套餐包。

    3.准备短信签名归属方资质证明文件

    4.已获取短信应用的 SDKAppID。

    主要获取这几个参数

    secretId(秘钥id)

    secretKey(秘钥key)

    SmsSdkAppId(appId)

    TemplateId(短信模板id)

    目录

    1.获取验证码、缓存

    2.从缓存中获取验证码、校验


    1.获取验证码、缓存

    1.1参考腾讯云对接腾讯云接口文档短信 如何实现短信验证码功能-最佳实践-文档中心-腾讯云

    1.2使用腾讯云在线调试,先做调试,可以正确获取短信后,生成java代码

    下面附上代码,供大家参考

    1. /**
    2. * 获取腾讯云手机短信验证码
    3. *
    4. * @param phone
    5. * @return
    6. */
    7. @Override
    8. public ResponseResult getPhoneNumberVerify(String phone) {
    9. Object p = CacheUtils.get("phoneVerifyCode", phone);
    10. if (StringUtils.isEmpty(phone)){
    11. return null;
    12. }
    13. if(null != p && !String.valueOf(p).isEmpty()){
    14. return ResponseResultUtils.genErrorResult("请勿重复获取验证码");
    15. }
    16. String regex = "^1[3,4,5,6,7,8,9][0-9]{9}$";
    17. if (!phone.matches(regex)){
    18. return ResponseResultUtils.genErrorResult("手机号格式不正确");
    19. }
    20. try{
    21. // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
    22. Credential cred = new Credential("秘钥id", "秘钥keyb");
    23. // 实例化一个http选项
    24. HttpProfile httpProfile = new HttpProfile();
    25. httpProfile.setEndpoint("sms.tencentcloudapi.com");
    26. // 实例化一个client选项,可选的,没有特殊需求可以跳过
    27. ClientProfile clientProfile = new ClientProfile();
    28. clientProfile.setHttpProfile(httpProfile);
    29. // 实例化要请求产品的client对象,clientProfile是可选的
    30. SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);
    31. // 实例化一个请求对象,每个接口都会对应一个request对象
    32. SendSmsRequest req = new SendSmsRequest();
    33. String[] phoneNumberSet1 = {phone};
    34. req.setPhoneNumberSet(phoneNumberSet1);
    35. req.setSmsSdkAppId("SmsSdkAppId");
    36. req.setSignName("签名内容(这个参数不是不填)");
    37. req.setTemplateId("短信模板id");
    38. Random random = new Random();
    39. int randomNumber = random.nextInt(999999);
    40. String[] templateParamSet1 = {String.valueOf(randomNumber)};
    41. req.setTemplateParamSet(templateParamSet1);
    42. // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
    43. SendSmsResponse resp = client.SendSms(req);
    44. // 输出json格式的字符串回包
    45. System.out.println("--->"+SendSmsResponse.toJsonString(resp));
    46. SendStatus[] sendStatusSet = resp.getSendStatusSet();
    47. JSONObject jsonObject = JSONObject.from(sendStatusSet[0]);
    48. if ("Ok".equals(jsonObject.getString("Code"))){
    49. CacheUtils.put("phoneVerifyCode",phone,randomNumber,60000);
    50. return ResponseResultUtils.genResult("发送成功");
    51. }
    52. } catch (TencentCloudSDKException e) {
    53. System.out.println(e.toString());
    54. }
    55. return ResponseResultUtils.genErrorResult("发送失败");
    56. }

     此外还需要在pom.xml加上包依赖

    1. <dependency>
    2. <groupId>com.tencentcloudapigroupId>
    3. <artifactId>tencentcloud-sdk-java-commonartifactId>
    4. <version>LATESTversion>
    5. dependency>
    6. <dependency>
    7. <groupId>com.tencentcloudapigroupId>
    8. <artifactId>tencentcloud-sdk-java-smsartifactId>
    9. <version>LATESTversion>
    10. dependency>
    2.从缓存中获取验证码、校验

    2.1校验验证码就很简单啦,从缓存中根据手机号获取验证码,我用的是系统自带缓存,使用redis的话,根据收据号手机号key,获取value

    1. /**
    2. * 验证腾讯云手机短信验证码
    3. *
    4. * @param code
    5. * @param phone
    6. * @return
    7. */
    8. @Override
    9. public ResponseResult verifyPhoneVerifyCode(String code, String phone) {
    10. String verifyCode = CacheParamUtils.getParmValue("phone.verify.code");
    11. if (verifyCode.equals(code)){
    12. return ResponseResultUtils.genResult("验证成功");
    13. }
    14. Object p = CacheUtils.get("phoneVerifyCode", phone);
    15. if (null == p && StringUtils.isEmpty(String.valueOf(p))){
    16. return ResponseResultUtils.genErrorResult("验证码失效");
    17. }
    18. if (String.valueOf(p).equals(code)){
    19. return ResponseResultUtils.genResult("验证成功");
    20. }
    21. return ResponseResultUtils.genErrorResult("验证失败");
    22. }

  • 相关阅读:
    说说C/C++编译的那些事儿
    kubernetes组件 Controller manager深刻认知
    DBeaver(其他可视化工具一样的逻辑)连接IoTDBDriver教程
    【教学类-41】翻页连环画4.0(双面2份,正反2种图案翻页)表情包
    Linux下的web服务器搭建
    一步一步迁移ASP.NET Core 6.0-Part2
    安装CDH平台的服务器磁盘满了,磁盘清理过程记录
    传统 IAM 已成为企业增长桎梏,下一代身份基础设施如何帮助企业破局?
    ubuntun系统更换清华源
    前端移动web高级详细解析一
  • 原文地址:https://blog.csdn.net/caijigskg/article/details/133767319