注册中验证码实现(项目案例)

简介: 今天,给大家介绍验证码的相关配置问题。众所周知,对传统验证码而言,便捷和安全长期以来一直是鱼与熊掌的关系。这可从12306与黄牛的博弈中看出端倪。

今天,给大家介绍验证码的相关配置问题。众所周知,对传统验证码而言,便捷和安全长期以来一直是鱼与熊掌的关系。这可从12306与黄牛的博弈中看出端倪。


最先开始,只是简单的数字英文组合,再后来有了加减法,相信一般人也可以应付。


20210118111933410.jpg


直到出现一闪一闪的动态验证码和变形字母,第一次体会到眼睛都快看瞎了,还有输不对的情况~


20210118111946340.gif


但这些与后来的图片验证码相比,还只是小儿科,不信你看:


20210118112000772.jpg


网友戏称:不懂娱乐圈,没资格买票回家。


验证码相关配置



不过对于我们一般小型系统而言,那么复杂的验证码确实没必要,简单的英文数字组合肯定够了。


今天就给大家介绍如何配置英文数字组合验证码。


配置比较简单,首先在JSP界面引入验证码:


<div class="form-group">
<label for="yanzheng" class="col-sm-2 control-label">验证码</label>
<div class="col-sm-6">
  <input name="inputCode" value=""/>  
  <img border="0" src="${pageContext.request.contextPath }/checkCode" />
     <input type="button" value="换一张" onclick="history.go(0) "/>
</div>
</div>


然后引入工具类CheckCode:


public class CheckCodeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws                    ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws                             ServletException, IOException {
   response.setContentType("image/jpeg");
   HttpSession session = request.getSession();
   int width = 60;
   int height = 20;
   //设置浏览器不要缓存此图片
   response.setHeader("Pragma", "No-cache");
   response.setHeader("Cache-Control", "no-cache");
   response.setDateHeader("Expires", 0);
   //创建内存图像并获得其图形上下文
   BufferedImage image = new BufferedImage(width,                                   height,BufferedImage.TYPE_INT_RGB);
   Graphics g = image.getGraphics();
    // 产生随机验证码
    //定义验证码的字符表
   String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   char[] rands = new char[4];
   for(int i = 0; i < 4; i++) {
      int rand = (int) (Math.random() * 36);
      rands[i] = chars.charAt(rand);
   }
    // 产生图像
   //画背景
   g.setColor(new Color(0xDCDCDC));
   g.fillRect(0, 0, width, height);
   //随机产生120个干扰点
   for(int i = 0; i < 120; i++) {
      int x = (int)(Math.random() * width);
      int y = (int)(Math.random() * height);
      int red = (int)(Math.random() * 255);
      int green = (int)(Math.random() * 255);
      int blue = (int)(Math.random() * 255);
      g.setColor(new Color(red, green, blue));
      g.drawOval(x, y, 1, 0);
   }
   g.setColor(Color.BLACK);
   g.setFont(new Font(null, Font.ITALIC|Font.BOLD, 18));
   //在不同的高度上输出验证码的不同字符
   g.drawString("" + rands[0], 1, 17);
   g.drawString("" + rands[1], 16, 15);
   g.drawString("" + rands[2], 31, 18);
   g.drawString("" + rands[3], 46, 16);
   g.dispose();
   //将图像输出到客户端
   ServletOutputStream sos = response.getOutputStream();
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   ImageIO.write(image, "JPEG", baos);
   byte[] buffer = baos.toByteArray();
   response.setContentLength(buffer.length);
   sos.write(buffer);
   baos.close();
   sos.close();
   //将验证码放到 session 中
   session.setAttribute("checkCode", new String(rands));
}
}
 验证码放到session中后,在Controller中获取session,然后与前台输入对比:
 String sc=(String)session.getAttribute("checkCode");
 if(sc.equals(inputCode)){
   //对比验证码即可
 }


以上就是验证码的全部代码实现。如果你有任何问题,欢迎私信,我们共同交流讨论。


相关文章
|
小程序 数据安全/隐私保护 开发者
【已解决】开发者扫码登录提示“需要验证小程序密码”
开发者扫码登录提示“需要验证小程序密码”
539 0
【已解决】开发者扫码登录提示“需要验证小程序密码”
|
安全 Java API
阿里云——Java实现手机短信验证码功能
通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。目前,短信验证码广泛应用于用户注册、密码找回、登录保护、身份认证、随机密码、交易确认等应用场景。本文通过调用API开发一个短信验证码为例,带您了解如何实现短信验证码功能。
6242 6
阿里云——Java实现手机短信验证码功能
|
5天前
|
存储 小程序 前端开发
【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
12 0
|
8月前
|
前端开发 JavaScript Java
淘东电商项目(24) -获取验证码功能
淘东电商项目(24) -获取验证码功能
44 0
|
8月前
|
移动开发 自然语言处理 Java
终于把公众号扫码关注绑定手机号自动登录讲清楚了
日常开发中,相信不管做 C 端还是 B 端业务的同学都会遇到微信相关的业务,比如微信登录、微信支付、公众号扫码关注等场景。 最近博主在做公众号扫码关注自动登录这一块的业务,因此总结绘制了一张公众号扫码关注绑定手机号自动登录流程图分享给大家。
170 0
|
10月前
|
XML 缓存 NoSQL
手把手实现第三方社交登录方式微信登录
手把手实现第三方社交登录方式微信登录
118 0
|
12月前
|
SQL 小程序 搜索推荐
微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
636 0
微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
|
11月前
|
存储 缓存 小程序
微信开发之-登录
微信开发之-登录
87 0
|
11月前
|
安全 API 数据安全/隐私保护
短信服务在项目中的配置及如何实现验证码登录
短信服务在项目中的配置及如何实现验证码登录
188 0
|
小程序 JavaScript
微信小程序登录与注册验证码倒计时的效果实现
微信小程序登录与注册验证码倒计时的效果实现
271 0