SpringBoot获取短信验证码

使用了榛子云短信平台

榛子Java SDK 开发文档

添加榛子云短信坐标



    com.zhenzikj
    zhenzisms
    2.0.2

Controller中使用

获取短信 并以 uuid-code 方式存入session中并设置5分钟有效期

/**
 * 获取短信验证码
 * 存session中,5分钟有效
 *
 * @param phoneNo
 */
@RequestMapping(value = "/msg", method = RequestMethod.GET)
public JsonResult getMsg(HttpServletRequest request, String phoneNo) {
	//apiUrl, appId, appSecret 在官方“我的应用中查找”
    ZhenziSmsClient client = new ZhenziSmsClient("apiUrl", "appId", "appSecret");
    Map params = new HashMap<>();
    params.put("number", phoneNo);
    params.put("templateId", "706");

    String randomCode = RandomUtils.getRandomCode();
    String[] templateParams = new String[2];
    templateParams[0] = randomCode;
    templateParams[1] = "5分钟";
    params.put("templateParams", templateParams);
    params.put("clientIp", IpUtil.getIpAddr(request));
    logger.info("当前用户ip:" + IpUtil.getIpAddr(request));
    try {
        String result = client.send(params);
        logger.info("send message code result:" + result);
        JSONObject jsonObject = new JSONObject(result);
        if (StringUtils.equals("0", jsonObject.getString("code"))) {
            //存入session中 uuid-code  5分钟过期
            String uuidStr = UUID.randomUUID().toString();
            HttpSession session = request.getSession();
            session.setAttribute(uuidStr, randomCode);
            session.setMaxInactiveInterval(300);
            return new JsonResult<>("{\"uuid\": \"" + uuidStr + "\"}");
        } else {
            //todo 109 ip或者手机号今日接收超限 今日发送超过IP限额/每个号码每天最多接收数量
            return new JsonResult<>(Constants.CODE_MSG, result);
        }
    } catch (Exception e) {
        e.printStackTrace();
        return new JsonResult<>(Constants.CODE_MSG, "操作失败!");
    }
}
 
  

使用到的工具类

/**
 * 字符串工具类
 */
public class RandomUtils {

    /**
     * 获取四位随机数字短信验证码
     *
     * @return
     */
    public static String getRandomCode() {
        StringBuffer codeStrBuf = new StringBuffer();
        String sources = "0123456789";
        Random rand = new Random();
        for (int j = 0; j < 4; j++) {
            codeStrBuf.append(sources.charAt(rand.nextInt(9)) + "");
        }
        return codeStrBuf.toString();
    }
}
/**
 * 返回json工具类
 *
 * @param 
 */
public class JsonResult {
    private T data;
    private String code;
    private String msg;

    /**
     * 若没有数据返回,默认状态码为 200,提示信息为“操作成功!”
     */
    public JsonResult() {
        this.code = Constants.CODE_SUCCESS;
        this.msg = "操作成功!";
    }

    /**
     * 若没有数据返回,可以人为指定状态码和提示信息
     *
     * @param code
     * @param msg
     */
    public JsonResult(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 有数据返回时,状态码为 200,默认提示信息为“操作成功!”
     *
     * @param data
     */
    public JsonResult(T data) {
        this.data = data;
        this.code = Constants.CODE_SUCCESS;
        this.msg = "操作成功!";
    }

    /**
     * 有数据返回,状态码为 200,人为指定提示信息
     *
     * @param data
     * @param msg
     */
    public JsonResult(T data, String msg) {
        this.data = data;
        this.code = Constants.CODE_SUCCESS;
        this.msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

android程序员学习javaee实现"自举",做一款属于自己的app;仅此记录,如有问题还请提出;谢谢

你可能感兴趣的:(springboot)