使用kaptcha快速生成验证码

文章目录

kaptcha会员注册和登录:

第一步,在Maven仓库中引入Kaptcha依赖(注意将新的jar,进行发布)

第二步,在applicationContext.xml文件中配置Kaptcha

第三步,创建Controller类,生成Kaptcha代码,并输出到前端

 
  • kaptcha会员注册和登录:

  • 一、kaptcha是什么?
  • 二、使用步骤
    • 第一步,在Maven仓库中引入Kaptcha依赖(注意将新的jar,进行发布)

    • 第二步,在applicationContext.xml文件中配置Kaptcha

    • 第三步,创建Controller类,生成Kaptcha代码,并输出到前端

  • 三.注册和登录:
  • 第一步,复制注册页,并将其改为ftl--freemarker脚本,将其中的验证码的src设置为验证码controller中的验证码的url

  • 第二步,创建用于会员注册和登记的Controller

  • 第三步,完成点击验证码刷新的功能

  • 第四步:对前台提交的验证码在后台进行校验在SpringMVC 框架中,当需需要request、response 原生servlet参数时,直接放在@Controller的方法参数中,使用就可以了。



提示:以下是本篇文章正文内容,下面案例可供参考

一、kaptcha是什么?

使用kaptcha生成验证码的作用:进行人机校验--防止机器脚本,自动大量注册用户。

1.Kaptcha是谷歌开源的可高度配置的实用验证码生成工具。

2.通过Kaptcha可阻拦大多数机器人脚本操作。

3.kaptcha典型殷勇于注册、登录、重要信息提交等用户交互

二、Kaptcha使用步骤

1.第一步,引入Kaptcha依赖(注意将新的jar,进行发布)

<!-- Kaptcha验证码组件 --><dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency>

2.第二步,在applicationContext.xml文件中配置Kaptcha

<!--配置kaptcha--><!-- 配置Kaptcha --><bean id="kaptchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha"><property name="config"><bean class="com.google.code.kaptcha.util.Config"><constructor-arg><props><!--验证码图片不生成边框--><prop key="kaptcha.border">no</prop><!-- 验证码图片宽度为120像素 --><prop key="kaptcha.image.width">120</prop><!-- 验证码图片字体颜色为蓝色 --><prop key="kaptcha.textproducer.font.color">blue</prop><!-- 每个字符最大占用40像素 --><prop key="kaptcha.textproducer.font.size">40</prop><!-- 验证码包含4个字符 --><prop key="kaptcha.textproducer.char.length">4</prop></props></constructor-arg></bean></property></bean>

3.第三步,创建Controller类,生成Kaptcha代码,并输出到前端

@Controller
public class KaptchaController {@Resourceprivate Producer kaptchaProducer;//Producer是一个接口,属性名和applicationContext.xml里面的配置文件里面一致@GetMapping("/verify_code")public  void  createVerifyCode(HttpServletRequest request, HttpServletResponse response) throws IOException {//响应立即过期response.setDateHeader("Expires",0);//不缓存任何图片数据response.setHeader("Cache-Control" , "no-store,no-cache,must-revalidate");response.setHeader("Cache-Control" , "post-check=0,pre-check=0");response.setHeader("Pragma" , "no-cache");response.setContentType("image/png");//生成验证码字符文本String verifyCode = kaptchaProducer.createText();request.getSession().setAttribute("kaptchaVerifyCode",verifyCode);System.out.println(request.getSession().getAttribute("kaptchaVerifyCode"));BufferedImage image = kaptchaProducer.createImage(verifyCode);//创建验证码图片ServletOutputStream out = response.getOutputStream();//二进制的图片,用getOutputStream()方法ImageIO.write(image,"png",out);out.flush();//立即输出out.close();//关闭输出}
}

注册与登录:

第一步:复制注册页,并将其改为ftl--freemarker脚本,将其中的验证码的src设置为验证码controller中的验证码的url

第二步:创建用于会员注册和登记的Controller,其中的url最好以.html结尾,有利于其他搜索引擎对本地址进行搜索

package com.imooc.reader.controller;import com.imooc.reader.service.MemberService;
import com.imooc.reader.service.exception.BussinessException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;@Controller
public class MemberController {@Resourceprivate MemberService memberService;@GetMapping("/register.html")public ModelAndView showRegister(){return  new ModelAndView("/register");}@PostMapping("/registe")@ResponseBodypublic Map registe(String vc, String username, String password , String nickname , HttpServletRequest request){//正确验证码String verifyCode = (String)request.getSession().getAttribute("kaptchaVerifyCode");//与KaptchaController里面的request.getSession().setAttribute("kaptchaVerifyCode",verifyCode)类似//验证码对比Map result = new HashMap();if(vc == null || verifyCode == null || !vc.equalsIgnoreCase(verifyCode)){result.put("code", "VC01");result.put("msg", "验证码错误");}else{try {memberService.createMember(username, password, nickname);result.put("code", "0");result.put("msg", "success");}catch (BussinessException ex){ex.printStackTrace();result.put("code", ex.getCode());result.put("msg", ex.getMsg());}}return result;}
}

第三步:点击验证码刷新,jquery中使用.attr来设置组件的属性,为了时每次发送的请求不一样,避免对图片进行缓存,采用ts时间戳参数来解决缓存问题。

第四步:发送ajax请求,将验证码、用户名、密码、昵称等序列化发送给后台

 第五步:验证controller方法,判断验证码的准确性

@PostMapping("/registe")@ResponseBodypublic Map registe(String vc, String username, String password , String nickname , HttpServletRequest request){//正确验证码String verifyCode = (String)request.getSession().getAttribute("kaptchaVerifyCode");//与KaptchaController里面的request.getSession().setAttribute("kaptchaVerifyCode",verifyCode)类似//验证码对比Map result = new HashMap();if(vc == null || verifyCode == null || !vc.equalsIgnoreCase(verifyCode)){result.put("code", "VC01");result.put("msg", "验证码错误");}else{try {memberService.createMember(username, password, nickname);result.put("code", "0");result.put("msg", "success");}catch (BussinessException ex){ex.printStackTrace();result.put("code", ex.getCode());result.put("msg", ex.getMsg());}}return result;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2752.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用kaptcha生成验证码

前言 说到生成验证码&#xff0c;我们第一个想到的就是kaptcha包&#xff0c;因为这个包已经存在很久了&#xff0c;比较稳定&#xff0c;用的人也多网上的示例代码多&#xff0c;而且很多项目脚手架做验证时也都是用这个框架的。 代码 添加依赖 <!-- 验证码 --><d…

kaptcha验证码使用

效果图&#xff1a; 官方地址&#xff1a;https://code.google.com/p/kaptcha/w/list 1、把下载的kaptcha-2.3.2.jar添加到lib中 2、配置web.xml增加servlet <servlet> <servlet-name>Kaptcha</servlet-name> <servlet-class>com.goog…

验证码Kaptcha的使用

引言 Kaptcha是一个非常实用的验证码生成工具&#xff0c;可以通过配置生成多样化的验证码。以图片的形式显示&#xff0c;从而无法进行复制粘贴。 1.引入Maven依赖 <!-- https://mvnrepository.com/artifact/com.github.penggle/kaptcha --><dependency><gro…

验证码captcha

通过使用Django的第三方库进行快速开发 安装软件 pip install django-simple-captcha 配置setting 使用python manage.py startapp user应用后在setting.py中添加 自定义forms.py 在应用下创建forms.py并添加如下&#xff1a; from django import forms from captcha.…

登录验证码实现(Captcha)

登录验证码 登录验证是一般系统都会有的功能&#xff0c;验证的方式也多种多样&#xff0c;比如输入式验证码&#xff0c;拖动式验证条&#xff0c;拖动式验证拼图等等。 我们这里先实现常规的输入验证码的方式&#xff0c;右边显示验证码图片&#xff0c;点击可刷新&#xf…

使用chatgpt过funcaptcha验证码3个人学习记录

funcaptcha 验证码3 通过记录 往期验证码&#xff1a;http://t.csdn.cn/ulgXY funcaptcha1 往期验证码&#xff1a;http://t.csdn.cn/3xMnZ funcaptcha2 funcaptcha 那个公司开发的简要介绍&#xff1a; Funcaptcha是由hCaptcha公司开发的一种人机验证系统。hCaptcha是一家位…

使用chatgpt过funcaptcha验证码2个人学习记录

funcaptcha 验证码2 通过记录 ** funcaptcha 那个公司开发的简要介绍&#xff1a; Funcaptcha是由hCaptcha公司开发的一种人机验证系统。hCaptcha是一家位于美国的人机验证技术提供商&#xff0c;旨在帮助网站和应用程序防止自动化攻击和滥用。 Funcaptcha是hCaptcha提供的一种…

chatgpt赋能python:Python如何获取手机短信验证码

Python如何获取手机短信验证码 在现代社会里&#xff0c;验证码已经成为了各种网站、APP、银行等机构对用户身份认证的必备手段。从有用性角度考虑&#xff0c;我们需要确保验证码的真实有效性&#xff0c;从而保护用户信息的安全。而为了方便用户接收验证码&#xff0c;手机短…

chatgpt赋能python:Python爬虫绕过验证码的技巧及实现方法

Python爬虫绕过验证码的技巧及实现方法 在进行网络爬虫过程中&#xff0c;验证码常常会给我们带来种种困扰&#xff0c;如何绕过验证码是广大爬虫开发者必须面对的难题之一。在本文中&#xff0c;我们将介绍一些有助于解决验证码问题的技巧和实现方法。 什么是验证码 验证码…

chatgpt赋能python:Python判断验证码是否正确

Python判断验证码是否正确 验证码是一种用于防止机器人攻击的技术&#xff0c;现在被广泛地使用在网站登录、注册、找回密码等场景中。以图片形式出现的验证码&#xff0c;可以让机器难以破解或自动化攻击&#xff0c;提供了更加安全的体验。在Python中&#xff0c;我们可以使…

chatgpt赋能python:Python发送短信验证码教程-从入门到实战

Python发送短信验证码教程 - 从入门到实战 作为一名有10年Python编程经验的工程师&#xff0c;我深知短信验证码在很多场景下的重要性。比如注册、登录、重置密码等&#xff0c;都需要使用短信验证码来确认用户的真实性。 Python是一种非常强大的编程语言&#xff0c;可以很方…

五分钟创建一个ChatGPT Plugin

OpenAI 在2023年3月发布了 ChatGPT 的官方 API &#xff0c;且于今天发布了Plugin开发使用资格&#xff0c;许多开发者和创业者都兴致勃勃地想办法将其整合到自己的业务运营中。 但是&#xff0c;想要做到这一点&#xff0c;仍然困难重重&#xff1a; OpenAI为 ChatGPT 提供了…

还不懂如何与chatGPT高效交流?保姆级且全面的chatGPT提示词工程教程来啦!(二)进阶篇

还不懂如何与chatGPT高效交流&#xff1f;保姆级且全面的chatGPT提示词工程教程来啦&#xff01;&#xff08;二&#xff09;进阶篇 基础篇中&#xff0c;教了如何通过遵循四个基本要义向chatGPT清楚的表达出你的需求。下面是四要义的提纲&#xff0c;忘记了可以复习一下还不懂…

当ChatGPT遇上弱智…

每天给你送来NLP技术干货&#xff01; 来自&#xff1a;量子位 点击这里进群—>加入NLP交流群 没想到&#xff0c;无敌如弱智吧&#xff0c;也有被ChaGPT“反将一军”的时候。 提问AI“咱们来玩个马吃草的扮演游戏吧&#xff0c;我草你马。” AI咀嚼了一下这句话&#xff0c…

事半功倍,使用ChatGPT编写Python函数

如何使用 ChatGPT 编写 Python 函数 微信搜索关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 在这篇文章中&#xff0c;我将分享如何使用 ChatGPT 来帮助我编程的过程。我们将看到它在哪些方面做得好&#xff0c;在哪些方面做得不好。 TLDR&#x…

使用ChatGPT提升Python编程效率

作为Python开发者&#xff0c;如何使用 OpenAI ChatGPT提升Python变成效率。 微信搜索关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 OpenAI 的聊天工具是一个基于网络的聊天界面&#xff0c;允许用户使用名为“ChatGPT”的 OpenAI 语言模型进行交…

ChatGPT连接企微

目录 一、下载企业微信项目地址 二、创建应用 三、配置应用 3.1、这里需要记录上你的AgentId与Secret&#xff0c;然后点击下面的设置API接收&#xff0c;设置下面的参数&#xff0c;现在还保存不了&#xff0c;进行下一步&#xff1a;服务器运行应用 3.2 、API接受消息界…

ChatGPT is fun, but not an author(有兴趣加入ChatGPT群)ChatGPT利与弊分析

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G 在不到两个月的时间里&#xff0c;人工智能&#xff08;AI&#xff09;项目ChatGPT已经成为一种文化…

当我把ChatGPT拉进群聊里,我的朋友都玩疯了

前言 近期ChatGPT可以说是太火了&#xff0c;问答、写论文、写诗、写代码&#xff0c;只要输入精确的prompt&#xff0c;他的表现总是让人惊喜。本着打不过就加入的原则。要是把ChatGPT拉入群聊中&#xff0c;会是怎样一番场景&#xff1f;说做就做&#xff0c;花了1个晚上捣鼓…

怎么玩ChatGPT?解锁玩ChatGPT玩法

继AI绘画之后&#xff0c;ChatGPT开始成为新晋“网红。ChatGPT是一个有趣的AI程序。ChatGPT是OpenAI推出的一个语言模型系统&#xff0c;它能够实时回答用户提问&#xff0c;包括聊天、纠正语法错误&#xff0c;甚至是写代码、写剧本等&#xff0c;由于可玩性很高。正是因此&am…