原理:(部分代码是基于Spring注解的,请见谅)
1. 图片的src写请求的方式进入后台
2. 通过工具类生成一个图片的验证码,并将验证码放到session中,同时生成图片并输出图片。
@RequestMapping(value = "/image", method = RequestMethod.GET) public void initImg(HttpServletRequest request, HttpServletResponse response) throws Exception { // 设置不缓存图片 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0); // 生成随机字串 String verifyCode = VerifyCodeUtils.generateVerifyCode(4); // 存入会话session HttpSession session = request.getSession(true); session.setAttribute("verifyCode", verifyCode.toLowerCase()); // 生成图片 int w = 200, h = 80; VerifyCodeUtils.outputImage(w, h, response.getOutputStream(), verifyCode); }
3. 页面加载后就能出现图片
4. 在登录的时候在session中拿出刚刚存入session的verifyCode
@ResponseBody @RequestMapping(value = "/login", method = RequestMethod.POST) public ResultVO login(HttpServletRequest request, String userName, String password, String verifyCode) throws Exception { AssertUtil.notBlank(userName, "userName required"); AssertUtil.notBlank(password, "password required"); AssertUtil.notBlank(verifyCode, "verifyCode required"); HttpSession session = request.getSession(true); String sessionCode = session.getAttribute("verifyCode").toString(); if (!verifyCode.equals(sessionCode)) { throw new InvalidArgumentException("VerifyCode 错误"); } loginService.login(userName, password); ResultVO result = new ResultVO(); result.setMessage("login success"); return result; }
问题:
1. 之刷新图片不刷新页面?
解决方法:
1. 加上一个链接,
<a href="#" onclick="refreshImg();">下一张</a><br/>
注意href中不能为“”(空字符串),因为会刷新整个页面;同时可不能是“.”;只能是“#”
2. js脚本如下:
<script type="text/javascript"> function refreshImg () { var image = document.getElementById('verifyImg'); image.src = '../image?'+Math.random(); } </script>
注意:在之前../image请求的基础上,加上了随机数,因为用../image是无法刷新的,
3. 同时,在页面重新加载的时候刷新验证码,以免验证码被重用
window.onload = refreshImg();
相关推荐
Jsp 登录 验证码 实现
layui 实现登陆界面验证码 layui 是一个流行的前端框架,它提供了很多实用的功能和组件,其中包括实现登陆界面验证码的功能。...通过使用 layui 的表单组件和 canvas 元素,我们可以轻松地实现验证码的生成和验证。
在这个“SSM实现登录验证码功能”的项目中,我们将探讨如何在SSM框架下添加验证码功能,以增强用户登录的安全性。 首先,验证码功能的基本目的是防止恶意自动化程序(如机器人或爬虫)进行非法操作,如频繁尝试登录...
SpringBoot登录验证码实现过程详解 SpringBoot登录验证码实现过程详解是指在SpringBoot框架中实现登录验证码的整个过程。验证码是指在登录过程中,服务器生成的一串随机字符,用户需要输入正确的验证码以便通过验证...
该代码可以帮助开发者快速实现验证码功能,以提高网络应用程序的安全性。 知识点: 1. 如何使用 C# 生成登陆验证码代码 2. 验证码的实现机制 3. 如何使用随机数生成器生成验证码字符串 4. 如何使用 Graphics 对象...
最后,`struts2验证码.rar`可能是一个基于Struts2框架的登录验证码实现。Struts2是一个流行的Java Web MVC框架,这个例子可能包含: 1. **Struts2拦截器**:自定义拦截器实现验证码的生成和验证。 2. **Action类**...
本教程将详细讲解如何在Java JSP环境下制作一个简单的登录验证码。 首先,我们需要理解验证码的基本原理。验证码通常由随机生成的一串字符(包括字母、数字)组成,并通过图像展示出来,用户需要在输入框中正确输入...
本示例中的“登录时随机验证码.rar”文件包含了一个简单的登录验证码实现,主要涉及到以下几个核心知识点: 1. **验证码生成**: 验证码通常由一组随机字符(包括字母、数字、特殊符号)组成,目的是让人类用户能...
JavaWeb使用验证码实现简单登录 在JavaWeb开发中,验证码是一种常用的安全机制,用于防止机器人和恶意攻击。下面将详细介绍如何使用验证码实现简单登录功能。 验证码的原理 验证码的原理是基于HTTP协议的请求响应...
Java 登录验证码实现代码详解 本文将详细介绍 Java 实现登录验证码的实现代码,包括验证码图片的生成、字符序列的随机生成、图片的绘制和输出等部分。 验证码图片生成 验证码图片的生成是通过 Java 中的 ...
本篇文章将深入探讨如何在Android平台上实现验证码功能,包括自定义控件的创建和验证码的生成与验证。 首先,验证码的主要目的是防止恶意机器人或自动化脚本进行非法操作,如批量注册、刷票等。在Android应用中,...
Java阿里云短信验证码实现 Java阿里云短信验证码实现是指通过阿里云短信服务平台发送短信验证码的实现,以下是该实现的详细介绍。 登录阿里云开放平台 在实现Java阿里云短信验证码之前,需要首先登录阿里云开放...
在验证码实现中,Spring Boot后端可以生成随机的验证码图像,并将其存储到响应体中返回给前端,或者存储到Redis中以保持状态。 Redis是一个高性能的键值数据库,常用于存储临时数据,如会话或验证码。将验证码存储...
java web登录验证码实现,分享,共勉学习。
在这个场景中,我们关注的是在ASP.NET MVC中实现验证码的功能。验证码的主要目的是防止自动机器人或恶意用户进行非法操作,例如垃圾邮件提交、恶意注册等。下面将详细讨论如何在ASP.NET MVC中实现验证码。 首先,...
以上就是使用 Spring Gateway 结合 Kaptcha 实现登录验证码校验的完整流程。这个方案不仅提高了系统的安全性,还保证了用户体验,因为所有验证都在网关层完成,无需向各个微服务传递额外的验证负担。通过这种方式,...
【beego框架图形验证码实现】是使用Go语言开发的一个高效且功能丰富的图形验证码库,它为Web应用提供了安全的验证码生成服务。这个库的核心目的是为了防止自动化程序(如机器人)进行非法操作,如批量注册、恶意登录...
jsp登录验证码,很好的登录验证码初学易懂
总结来说,测试中去掉登录验证码主要是通过模拟、代码修改、配置调整等方式来实现,目的是简化测试流程,提高测试效率。然而,这种方法仅适用于测试环境,并且在测试结束后必须恢复验证码功能,以保障系统的正常运行...
在“中文及字母数字验证码实现”中,系统会从预设的汉字库和字母数字集合中随机抽取一定数量的字符。为了增加破解难度,这些字符可以包含大小写字母、数字以及中文字符。 2. **乱序排列**:抽取的字符会被随机排列...