springboot使用session进行短信验证注册

首先在controller里写获取短信的代码,这里用的是榛子云的短信接口。

@PostMapping("/getCode")
    @ResponseBody
    public ServerResponse<User> getCode(String phone,
                                      HttpSession session
    ){
        try {
            ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId,appSecret);
            Map<String, String> params = new HashMap<String, String>();
            String code = String.valueOf(new Random().nextInt(999999));
            params.put("message", "您的验证码为:" + code + ",该码有效期为5分钟,该码只能使用一次!");
            params.put("number", phone);
            String result = client.send(params);
            JSONObject json = JSONObject.parseObject(result);
            if (json.getIntValue("code")!=0){//发送短信失败
                return  ServerResponse.createByErrorMessage("发送验证码失败");
            }
            json = new JSONObject();
            json.put("phone",phone);
            json.put("code",code);
            json.put("createTime",System.currentTimeMillis());
            session.setAttribute("code",json);
        }catch (Exception e){
            e.printStackTrace();
            return  ServerResponse.createByErrorMessage("发送验证码失败");
        }
        return  ServerResponse.createBySuccessMessage("发送验证码成功");
    }

然后就是写注册controller层,只要将验证码从session取出与用户输入的进行比较就好了

@PostMapping("/register")
    @ResponseBody
    public ServerResponse<User> register(String phone,
                                        String password,
                                        String vfcode,
                                        HttpSession session
    ){
        JSONObject userCode = (JSONObject)session.getAttribute("code");
        if(!vfcode.equals(userCode.getString("code"))){
            return  ServerResponse.createByErrorMessage("验证码错误");
        }
        ServerResponse<User> response = userService.register(phone,password);
        return response;
    }

最后就是服务层,就是比较简单的存入数据库就好了

@Override
    public ServerResponse<User> register(String phone,String password) {
        User user=new User();
        user.setPhone(phone);
        user.setPwd(MD5Util.MD5EncodeUtf8(password));
        userRepository.save(user);
        return ServerResponse.createBySuccessMessage("注册成功");
    }

你可能感兴趣的:(springboot使用session进行短信验证注册)