短信验证码:
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
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;
}
滑块验证码后续更新!
欢迎加入共同探讨