700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java验证码实现方式 SpringBoot实现后端验证码 CaptchaUtil美观的后端随机 算术 中文动态验证码

java验证码实现方式 SpringBoot实现后端验证码 CaptchaUtil美观的后端随机 算术 中文动态验证码

时间:2022-12-14 22:23:17

相关推荐

java验证码实现方式 SpringBoot实现后端验证码 CaptchaUtil美观的后端随机 算术 中文动态验证码

前言

感觉前端验证码没有后端的严谨

这里使用java后端获取图片验证码方式(超简单,复制粘贴就可以用)

实现

效果一

随机验证码

效果二

运算验证码

效果三

动态中文,这里的中文会一闪一闪的

还有数字字母验证码、数字字母动态验证码

html中

<style>/** 验证码*/.code-img{width: 120px;height: 40px;cursor: pointer;}</style><body><img src="captcha/code" class="code-img" title="看不清,换一张" onclick="refreshCaptcha()"></body><script type="text/javascript">/*** ----------------------------------------------------------------------------------* 刷新验证码*/function refreshCaptcha(){$(".code-img").attr("src", "captcha/code?time="+Math.random());}</script>

pom.xml依赖

<!--验证码依赖--><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency>

java使用方式

package com.modules.controller.sys; // 改为自己的包目录import mon.vo.Result;import com.wf.captcha.ArithmeticCaptcha;import com.wf.captcha.ChineseGifCaptcha;import com.wf.captcha.GifCaptcha;import com.wf.captcha.SpecCaptcha;import com.wf.captcha.utils.CaptchaUtil;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.CrossOrigin;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** 验证码获取* @author yyq*/@CrossOrigin(origins = "*",maxAge = 3600)// 前端请求发生跨域错误,加入这段处理@Controllerpublic class CaptchaController {private static final String SESSION_KEY = "captcha";@RequestMapping("captcha/code")public void code(HttpServletRequest request, HttpServletResponse response) throws Exception {// 返回随机数验证码// CaptchaUtil.out(request, response);// 数字加减乘除/*ArithmeticCaptcha captcha = new ArithmeticCaptcha(120, 40);// 可自定义宽高(不设置宽高,则按img标签的大小适应)captcha.setLen(2);// 两位运算*/// 动态中文验证码/*ChineseGifCaptcha captcha = new ChineseGifCaptcha();captcha.setLen(2);// 两位运算*/// 英文与数字验证码//SpecCaptcha captcha = new SpecCaptcha();//英文与数字动态验证码//GifCaptcha captcha = new GifCaptcha();// 英文与数字验证码SpecCaptcha captcha = new SpecCaptcha();captcha.setLen(4);// 验证字符数// 结果String result = captcha.text();//System.out.println(result);// 这里可以单独获取base64格式的验证码//captcha.toBase64();// 将结果存储到session中(由于有些验证码没存储结果,则需要自己存储,记得要转小写,可参考自带校验方法.ver)request.getSession().setAttribute(SESSION_KEY, result.toLowerCase());// 响应到前端captcha.out(response.getOutputStream());/*** 【说明】** 不设置宽度,则按img的宽度来自适应** 其中我们可以设置自定义样式 captcha.set****();* 有font、type、width、height等**/}@RequestMapping("login")public Result login(HttpServletRequest request, String captcha){// 先验证账号、密码、验证码是否为空// 因为生成的时候存储在了session中,我们也可以直接拿值String code = (String) request.getSession().getAttribute(SESSION_KEY);//System.out.println(code);// 对验证码进行验证if (!CaptchaUtil.ver(captcha, request)) {return Result.fail("验证码不正确");}CaptchaUtil.clear(request); // 清除session中的验证码// 验证账号、密码// 此处Result为个人封装返回对象return Result.success("登录成功");}}

注意:记得拦截器/过滤器把验证码接口放行!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。