验证码的生成和使用
验证码的作用
防止恶意破解密码、刷票、论坛灌水、刷页;
验证码通常使用一些线条和一些不规则的字符组成,主要作用是为了防止一些黑客把密码数据化盗取;
Kaptcha验证码工具
Kaptcha是非常实用的验证码生成工具,可通过配置生成多样化的验证码,以图片形式显示,无法复制粘贴;
官网:https://code.google.com/p/kaptcha/
Kaptcha的使用
1.pom.xml中引入Maven依赖
验证码
4 js中添加对应的事件函数
function changeCode(img) {img.src = "../Kaptcha?" + Math.floor(Math.random() * 100);
}
5 js中获取验证码数值并发送给后端
var formData = new FormData();
// 获取表单里输入的验证码
var verifyCodeActual = $('#test-kaptcha').val();
if (!verifyCodeActual) {$.toast('请输入验证码!');return;
}
formData.append('verifyCodeActual', verifyCodeActual);
//ajax代码略写
6 java后台接口逻辑
//工具类:检查验证码是否和预期相符
import javax.servlet.http.HttpServletRequest;
public class CodeUtil {public static boolean checkVerifyCode(HttpServletRequest request) {String verifyCodeExpected = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);String verifyCodeActual = HttpServletRequestUtil.getString(request, "verifyCodeActual");if (verifyCodeActual == null || !verifyCodeActual.equals(verifyCodeExpected)) {return false;}return true;}
}
//控制层验证逻辑
@RequestMapping(value = "/xxx", method = RequestMethod.POST)
@ResponseBody
private Map xxx(HttpServletRequest request) {Map modelMap = new HashMap();/*进行验证码比对,并将比对结果返回给前端*/if(!CodeUtil.checkVerifyCode(request)) {modelMap.put("success", false);modelMap.put("errMsg", "验证码错误");return modelMap;}
}
补充下用到的工具类:HttpServletRequestUtil代码如下:
import javax.servlet.http.HttpServletRequest;
public class HttpServletRequestUtil {public static int getInt(HttpServletRequest req, String key) {try {return Integer.decode(req.getParameter(key));} catch (Exception e) {return -1;}}public static long getLong(HttpServletRequest req, String key) {try {return Long.valueOf(req.getParameter(key));} catch (Exception e) {return -1;}}public static Double getDouble(HttpServletRequest req, String key) {try {return Double.valueOf(req.getParameter(key));} catch (Exception e) {return -1d;}}public static boolean getBoolean(HttpServletRequest req, String key) {try {return Boolean.valueOf(req.getParameter(key));} catch (Exception e) {return false;}}public static String getString(HttpServletRequest req, String key) {try {String result = req.getParameter(key);if (result != null) {result = result.trim();}if ("".equals(result)) {result = null;}return result;} catch (Exception e) {return null;}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
