1. 程式人生 > 其它 >java實現阿里雲簡訊驗證註冊--詳細教程

java實現阿里雲簡訊驗證註冊--詳細教程

技術標籤:springboot阿里雲javaspring

java實現阿里雲簡訊驗證註冊–詳細教程

  1. .專案中先引入依賴
<!--阿里雲簡訊包-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.4.0</version>
        </dependency>
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.0.0</version> </dependency>
  • .在配置檔案中配置相關的資訊

在這裡插入圖片描述

  • .控制層程式碼
//傳送簡訊驗證碼
    @GetMapping(value = "/sendsms/{phone}"
) public RestResponse sendSms(@PathVariable String phone) { try { userService.sendSms(phone); return RestResponse.ok("傳送成功"); } catch (Exception e) { e.printStackTrace(); return RestResponse.fail(2, e.getMessage()); }
}
  • .業務層程式碼
//傳送簡訊
    @Override
    public void sendSms(String phone) {

        User user = userStudentMapper.selectOne(
                new LambdaQueryWrapper<User>()
                        .eq(StringUtils.isNotBlank(phone), User::getPhone, phone)
                        .last("limit 1")

        );

        if (ObjectUtil.isNotNull(user)) {
            throw new RuntimeException("您已註冊~");
        }

        String code = RandomStringUtils.randomNumeric(6);
        String accessKeyId = env.getProperty("aliyun.sms.accesskeyid");
        String accessSecret = env.getProperty("aliyun.sms.secret");
        DefaultProfile profile = DefaultProfile.getProfile("default", accessKeyId, accessSecret);
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("PhoneNumbers", phone);
        request.putQueryParameter("SignName", signName);
        request.putQueryParameter("TemplateCode", templateCode);
        request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");

        try {
            CommonResponse response = client.getCommonResponse(request);
        } catch (ClientException e) {
            e.printStackTrace();
        }

        redisTemplate.opsForValue().set("code:" + phone, code, 5, TimeUnit.MINUTES);
    }
  • 註冊控制層
    /**
     * 註冊
     */
    @PostMapping("/register/{code}")
    public RestResponse register(@PathVariable String code, @RequestBody User user) {

        String password = user.getPassword();
        if (password.length() < 6) {
            return RestResponse.fail(SystemCode.ParameterValidError.getCode(), "密碼不能少於六位~");
        }

        String checkCode = redisTemplate.opsForValue().get("code:" + user.getUserName());
        if (StringUtils.isEmpty(checkCode)) {
            return RestResponse.fail(SystemCode.ParameterValidError.getCode(), "請重新獲取驗證碼~");
        }

        if (!code.equals(checkCode)) {
            return RestResponse.fail(SystemCode.ParameterValidError.getCode(), "驗證碼不正確~");
        }

        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getUserName, user.getUserName());
        User user1 = userStudentMapper.selectOne(lambdaQueryWrapper);
        if (user1 != null) {
            return RestResponse.fail(SystemCode.ParameterValidError.getCode(), "該手機號已註冊啦~");
        }

        try {
            String encodePwd = authenticationService.pwdEncode(user.getPassword());
            user.setPassword(encodePwd);
            user.setRole(1);
            userService.register(code, user);
            return RestResponse.ok("註冊成功");
        } catch (Exception e) {
            e.printStackTrace();
            return RestResponse.fail(SystemCode.ParameterValidError.getCode(), e.getMessage());
        }

    }
  • 註冊業務層
    //註冊
    @Override
    public void register(String code, User user) {
        user.setUserName(user.getUserName());
        user.setPhone(user.getUserName());
        user.setCreateTime(new Date());
        user.setStatus(1);
        user.setDeleted(false);
        user.setUserUuid(UUID.randomUUID().toString());
        userStudentMapper.insert(user);
    }

程式碼有些不太規範,請見諒!