图片验证码生成代码
生成圖片驗證碼需要一個jar包,在maven的pom文件上導入下面代碼:
<!-- https://mvnrepository.com/artifact/com.google.code.kaptcha/kaptcha --><dependency><groupId>com.google.code.kaptcha</groupId><artifactId>kaptcha</artifactId><version>2.3</version></dependency>首先java的后端:
@Controller public class SysLoginController {@Autowiredprivate Producer producer;/*生成驗證碼*/@RequestMapping("captcha.jpg")public void captcha(HttpServletResponse response)throws ServletException, IOException {response.setHeader("Cache-Control", "no-store, no-cache");response.setContentType("image/jpeg");//生成文字驗證碼String text = producer.createText();//生成圖片驗證碼BufferedImage image = producer.createImage(text);//保存到shiro sessionShiroUtils.setSessionAttribute(Constants.KAPTCHA_SESSION_KEY, text);ServletOutputStream out = response.getOutputStream();ImageIO.write(image, "jpg", out);} 登錄驗證的代碼 String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);if(!login.getCaptcha().equalsIgnoreCase(kaptcha)){return R.error("驗證碼不正確");}springmvc的配置:
<!-- Kaptcha驗證碼生成器 --><bean name="producer" class="com.google.code.kaptcha.impl.DefaultKaptcha" scope="singleton"><property name="config"><bean class="com.google.code.kaptcha.util.Config"><constructor-arg><props><prop key="kaptcha.border">no</prop><prop key="kaptcha.textproducer.font.color">black</prop><prop key="kaptcha.textproducer.char.space">5</prop></props></constructor-arg></bean></property></bean>前端:
<div class="layui-form-item form_code"><input class="layui-input" style="width: 140px;" name="captcha" placeholder="驗證碼" lay-verify="required" type="text" autocomplete="off"><div class="code"><img id="captcha" src="/captcha.jpg" width="116" height="36" onclick="refreshCode(this)"></div></div>點擊刷新圖片的js代碼:
function refreshCode(){var captcha = document.getElementById("captcha");captcha.src = "/captcha.jpg?t=" + new Date().getTime(); }附錄(驗證碼格式):
kaptcha.border 是否有邊框 默認為true 我們可以自己設置yes,no kaptcha.border.color 邊框顏色 默認為Color.BLACK kaptcha.border.thickness 邊框粗細度 默認為1 kaptcha.producer.impl 驗證碼生成器 默認為DefaultKaptcha kaptcha.textproducer.impl 驗證碼文本生成器 默認為DefaultTextCreator kaptcha.textproducer.char.string 驗證碼文本字符內容范圍 默認為abcde2345678gfynmnpwx kaptcha.textproducer.char.length 驗證碼文本字符長度 默認為5 kaptcha.textproducer.font.names 驗證碼文本字體樣式 默認為new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) kaptcha.textproducer.font.size 驗證碼文本字符大小 默認為40 kaptcha.textproducer.font.color 驗證碼文本字符顏色 默認為Color.BLACK kaptcha.textproducer.char.space 驗證碼文本字符間距 默認為2 kaptcha.noise.impl 驗證碼噪點生成對象 默認為DefaultNoise kaptcha.noise.color 驗證碼噪點顏色 默認為Color.BLACK kaptcha.obscurificator.impl 驗證碼樣式引擎 默認為WaterRipple kaptcha.word.impl 驗證碼文本字符渲染 默認為DefaultWordRenderer kaptcha.background.impl 驗證碼背景生成器 默認為DefaultBackground kaptcha.background.clear.from 驗證碼背景顏色漸進 默認為Color.LIGHT_GRAY kaptcha.background.clear.to 驗證碼背景顏色漸進 默認為Color.WHITE kaptcha.image.width 驗證碼圖片寬度 默認為200 kaptcha.image.height 驗證碼圖片高度 默認為50總結
- 上一篇: Mysql数据库设计及常见问题
- 下一篇: springboot搭建的ssm项目