• 腾讯云短信验证登录


    提前准备工作

    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. }

  • 相关阅读:
    CSS :has伪类
    Diffusion Autoencoders: Toward a Meaningful and Decodable Representation
    SCI一区 | Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测
    记vue-pdf踩坑过程
    前端学习笔记005:数据传输 + AJAX + axios
    【文本分类】《融合注意力和剪裁机制的通用文本分类模型》
    在fastapi中实现异步
    SDRAM详解
    无人驾驶: 对多传感器融合的一些思考(雷达与相机)
    Scala函数定义与使用
  • 原文地址:https://blog.csdn.net/caijigskg/article/details/133767319