JAVA采用手机号获取短信验证进行登录与注册

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: JAVA采用手机号获取短信验证进行登录与注册
  /**
   * 用户注册发送短信
   */
  @PostMapping("/sendMassage")
  @ApiOperationSupport(order = 12)
  @ApiOperation(value = "用户注册发送短信", notes = "传入electricMassage")
  //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
  public R sendMassage(String phone) throws IOException {
    Boolean flag = false;
    HttpClient client = new HttpClient();
    PostMethod post = new PostMethod("http://xxxxxxxx:8080/xxxx.do");
    post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码
    String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);
    NameValuePair[] data = {
      new NameValuePair("corp_id", "xxx"),
      new NameValuePair("corp_pwd", "xxx"),
      new NameValuePair("corp_service", "1069106967491"),
      new NameValuePair("mobile", phone),
      new NameValuePair("msg_content", "尊敬的用户,您好,您的验证码为:"+ verifyCode + ",验证码失效时间为5分钟,若非本人操作,请忽略此短信。"),
      new NameValuePair("corp_msg_id", ""),
      new NameValuePair("ext", "")
    };
    post.setRequestBody(data);
    client.executeMethod(post);
    Header[] headers = post.getResponseHeaders();
    for (Header h : headers) {
      System.out.println(h.toString());
    }
    int statusCode = post.getStatusCode();
    if (statusCode == 200) {
      flag = saveCaptcha(verifyCode, phone);
      if (flag) {
        String result = new String(post.getResponseBodyAsString());
        System.out.println(result);
        post.releaseConnection();
      }
    }
    return flag ? R.success(SEND_SUCCESS) : R.fail(SEND_FAIL);
  }
  /**
   * 用户注册接口
   *
   * @param user   用户信息
   * @return
   */
  @PostMapping("/regist")
  @ApiOperationSupport(order = 12)
  @ApiOperation(value = "用户注册接口", notes = "传入code")
  //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
  public R regist(@Valid @RequestBody User user) {
    boolean validate = checkCaptcha(user.getCaptcha(), user.getPhone());
    Boolean index = false;
    if (validate) {
      CacheUtil.clear(USER_CACHE);
      index = userService.submit(user);
    }
    return R.status(index);
  }
  //讲注册用的验证码存入到redis
  public Boolean saveCaptcha(String captcha, String phone) {
    try {
      //将验证码存储在redis中,并且设置过期时间5分钟
      redisTemplate.boundValueOps(phone).set(captcha, 300, TimeUnit.SECONDS);
      return true;
    } catch (Exception ex) {
      throw new RuntimeException(ex);
    }
  }
  //验证短信验证码
  public Boolean checkCaptcha(String captcha, String phone) {
    try {
      if (captcha.equals(redisTemplate.boundValueOps(phone).get())) {
        return true;
      } else {
        return false;
      }
    } catch (Exception ex) {
      throw new RuntimeException(ex);
    }
  }
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
前端开发 Java 数据库连接
Java代码打造的注册系统
Java代码打造的注册系统
21 0
|
2月前
|
存储 canal 算法
[Java·算法·简单] LeetCode 125. 验证回文串 详细解读
[Java·算法·简单] LeetCode 125. 验证回文串 详细解读
27 0
|
2月前
|
JavaScript Java
java生成验证码并进行验证
java生成验证码并进行验证
29 2
|
4月前
|
前端开发 Java 数据库连接
【Java实战篇】SpringBoot+MyBatis快速实现登录注册
【1月更文挑战第19天】【Java实战篇】SpringBoot+MyBatis快速实现登录注册
|
2天前
|
前端开发 JavaScript Java
前端和Java验签以太坊钱包签名实现中心化登录
前端和Java验签以太坊钱包签名实现中心化登录
23 8
|
26天前
|
Oracle Java 关系型数据库
Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。
86 0
|
2月前
|
JSON 前端开发 Java
|
2月前
|
存储 Java 关系型数据库
Java注册与登录
Java注册与登录
11 0
|
2月前
|
安全 Linux 网络安全
购了轻服务器,手机登录服务器用root和administrator做登录名,都提示别名已存在,请修改
【2月更文挑战第16天】购了轻服务器,手机登录服务器用root和administrator做登录名,都提示别名已存在,请修改
14 1
|
2月前
|
Java 程序员 数据安全/隐私保护
【Java每日一题】——第十二题:完成百战程序员系统登录功能
【Java每日一题】——第十二题:完成百战程序员系统登录功能
32 0