| /** | 
|  * Copyright (c) 2018 人人开源 All rights reserved. | 
|  * | 
|  * https://www.renren.io | 
|  * | 
|  * 版权所有,侵权必究! | 
|  */ | 
|   | 
| package com.zt.security.service; | 
|   | 
| import com.wf.captcha.ArithmeticCaptcha; | 
| import com.zt.common.utils.CacheUtils; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import javax.servlet.http.HttpServletResponse; | 
| import java.io.IOException; | 
|   | 
| /** | 
|  * 验证码 | 
|  * | 
|  * @author Mark sunlightcs@gmail.com | 
|  */ | 
| @Service | 
| public class CaptchaService { | 
|   | 
|     /** | 
|      * 图片验证码 | 
|      */ | 
|     public void create(HttpServletResponse response, String uuid) throws IOException { | 
|         response.setContentType("image/gif"); | 
|         response.setHeader("Pragma", "No-cache"); | 
|         response.setHeader("Cache-Control", "no-cache"); | 
|         response.setDateHeader("Expires", 0); | 
|   | 
|         // 生成验证码 | 
|         ArithmeticCaptcha captcha = new ArithmeticCaptcha(150, 40); | 
|         captcha.setLen(2); | 
|         captcha.getArithmeticString(); | 
|         captcha.out(response.getOutputStream()); | 
|   | 
|         // 保存到缓存 | 
|         CacheUtils.put("captchaCache", uuid, captcha.text()); | 
|     } | 
|   | 
|     /** | 
|      * 验证码效验 | 
|      * | 
|      * @param uuid | 
|      *            uuid | 
|      * @param code | 
|      *            验证码 | 
|      * @return true:成功 false:失败 | 
|      */ | 
|     public boolean validate(String uuid, String code) { | 
|         // 获取验证码 | 
|         String captcha = (String) CacheUtils.get("captchaCache", uuid); | 
|   | 
|         // 效验成功 | 
|         if (code.equalsIgnoreCase(captcha)) { | 
|             return true; | 
|         } | 
|   | 
|         return false; | 
|     } | 
| } |