验证码

短信验证码:

 

验证码_第1张图片

import java.util.Random;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

 

import com.alibaba.fastjson.JSONObject;

import com.bessky.financail.thirdparty.util.SendAliyunMessage;

import com.bessky.financial.common.json.ResponseJson;

import com.bessky.financial.common.util.StatusCode;

 

import javax.servlet.http.HttpSession;

 

/**

 * 

 * 发送验证码

 

 */

@Controller

@RequestMapping(value = "verifycode")

public class VerifyCodeController

{

 

    @RequestMapping(value = "getverifycode", method = {RequestMethod.GET})

    @ResponseBody

    public ResponseJson sendVerifYCode(HttpServletRequest request, @RequestParam("style") String style)

    {

        ResponseJson responseJson = new ResponseJson();

        try

        {

            JSONObject json = null;

            // 生成6位验证码

            String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);

            // 发送短信

            String phone = "1371********";

            responseJson = SendAliyunMessage.sendMsg(phone, verifyCode);

            if (StatusCode.SUCCESS.equals(responseJson.getStatus()))

            {

                request.getSession().removeAttribute("verifyCode");

                // 将验证码存到session中,同时存入创建时间

                json = new JSONObject();

                json.put("verifyCode", verifyCode);

                json.put("createTime", System.currentTimeMillis());

                // 将认证码存入SESSION

                request.getSession().setAttribute("verifyCode", json);

            }

        }

        catch (Exception e)

        {

            e.printStackTrace();

        }

        return responseJson;

    }

}

 

发送短信验证码存入session,当然也可以将发送的验证码存入数据库然后从库中取出来比较。

 

JSONObject json = (JSONObject)request.getSession().getAttribute("verifyCode");

        if(!json.getString("verifyCode").equals(verifyCode)){

            responseJson.setMessage("验证码错误");

            return responseJson;

        }

        if((System.currentTimeMillis() - json.getLong("createTime")) > 1000 * 60 * 5){

            responseJson.setMessage("验证码过期");

            return responseJson;

        }

 

普通验证码

web.xml中配置获取验证码servlet

kaptcha

com.google.code.kaptcha.servlet.KaptchaServlet

kaptcha.border

no

kaptcha.border.color

105,179,90

kaptcha.image.width

160

kaptcha.image.height

36

kaptcha.textproducer.font.size

32

kaptcha.session.key

KAPTCHA_SESSION_KEY

kaptcha.textproducer.char.length

4

kaptcha.textproducer.font.names

Arial

kaptcha.obscurificator.impl

com.google.code.kaptcha.impl.NoGimpy

kaptcha

/kaptcha.jpg

校验验证码

 

String key = (String) session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);

 

// 验证码校验

if (!StringUtils.equalsIgnoreCase(captcha, key)) {

json.setStatus(StatusCode.FAIL);

json.setMessage(I18nUtils.getMessage("60000403"));

return json;

}

滑块验证码后续更新!

欢迎加入共同探讨

验证码_第2张图片

你可能感兴趣的:(验证码)