Google?Kaptcha驗證碼生成的使用實例說明
Kaptcha是什么?
kaptcha 是谷歌開源的非常實用的驗證碼生成工具,基于SimpleCaptcha的開源項目。使用Kaptcha 生成驗證碼十分簡單并且參數(shù)可以進行自定義。只需添加jar包配置下就可以使用,通過配置,可以自己定義驗證碼大小、顏色、顯示的字符等等。下面就來講一下如何使用kaptcha生成驗證碼以及在服務器端取出驗證碼進行校驗。
怎么使用Kaptcha?
1.首先下載jar包
要項目使用Kaptcha肯定要依賴kaptcha的jar,maven項目的話直接加入如下依賴,非maven項目就自己下載jar包吧
<dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactId> <version>0.0.9</version> </dependency>
官方下載鏈接:https://code.google.com/archive/p/kaptcha/downloads,當然你得翻墻哈
2.配置kaptcha
以項目使用spring為例,配置一個默認的Kaptcha的bean,如下
<bean id="captchaProducer" 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.session.key">kaptcha.code</prop> <!-- 無邊框 --> <prop key="kaptcha.border">no</prop> <prop key="kaptcha.textproducer.font.color">black</prop> <!-- 渲染效果:水紋:WaterRipple;魚眼:FishEyeGimpy;陰影:ShadowGimpy --> <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.WaterRipple</prop> <!-- 不要噪點 --> <prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop> <prop key="kaptcha.image.width">90</prop> <prop key="kaptcha.image.height">33</prop> <prop key="kaptcha.textproducer.font.size">25</prop> <prop key="kaptcha.textproducer.char.length">4</prop> <prop key="kaptcha.textproducer.char.space">5</prop> <!-- 和登錄框背景顏色一致 --> <prop key="kaptcha.background.clear.from">247,247,247</prop> <prop key="kaptcha.background.clear.to">247,247,247</prop> </props> </constructor-arg> </bean> </property> </bean>
3.將驗證碼保存進session中
將生成的驗證碼保存進session中,并輸出由驗證碼生成的圖片流到頁面
@Autowired private Producer captchaProducer; @RequestMapping(value = "/kaptchaImage", method = RequestMethod.GET) public void kaptcha(HttpServletRequest req, HttpServletResponse rsp) { ServletOutputStream out = null; try { HttpSession session = req.getSession(); rsp.setDateHeader("Expires", 0); rsp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); rsp.addHeader("Cache-Control", "post-check=0, pre-check=0"); rsp.setHeader("Pragma", "no-cache"); rsp.setContentType("image/jpeg"); String capText = captchaProducer.createText(); session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText); BufferedImage image = captchaProducer.createImage(capText); out = rsp.getOutputStream(); ImageIO.write(image, "jpg", out); out.flush(); }catch(IOException e) { throw new SystemException(e); } finally { try { out.close(); } catch (IOException e) { throw new SystemException(e); } } }
4.驗證碼校驗
校驗用戶輸入的驗證碼和保存進session的是否一直,達到驗證目的
@RequestMapping(value = "/login", method = RequestMethod.POST, produces = "text/html; charset=utf-8") public String userLogin(String accountName, String password, String captcha, Boolean rememberMe, HttpServletRequest request) { //從session中取出kaptcha生成的驗證碼text值 String expected = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); //獲取用戶頁面輸入的驗證碼 if(!captcha.equalsIgnoreCase(expected)) { request.setAttribute("error", "驗證碼錯誤!"); return "/login"; }else { xxxx驗證碼后的后續(xù)邏輯 } }
Kaptcha驗證碼配置
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 驗證碼文本字符內(nèi)容范圍 默認為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
效果圖如下
以上就是Google Kaptcha驗證碼的使用實例說明的詳細內(nèi)容,更多關于Google Kaptcha驗證碼使用的資料請關注腳本之家其它相關文章!
相關文章
.properties文件讀取及占位符${...}替換源碼解析
本篇文章主要介紹了.properties文件讀取及占位符${...}替換源碼解析的相關知識,具有很好的參考價值。下面跟著小編一起來看下吧2017-05-05SpringBoot實現(xiàn)Md5對數(shù)據(jù)庫數(shù)據(jù)加密的示例
本文主要介紹了SpringBoot實現(xiàn)Md5對數(shù)據(jù)庫數(shù)據(jù)加密的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-04MAVEN_HOME、M2_HOME,maven環(huán)境變量設置方式
這篇文章主要介紹了MAVEN_HOME、M2_HOME,maven環(huán)境變量設置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07mybatis整合ehcache做三級緩存的實現(xiàn)方法
ehcache是一個快速內(nèi)存緩存框架,java項目里用起來很方便,下面這篇文章主要給大家介紹了關于mybatis整合ehcache做三級緩存的實現(xiàn)方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-06-06Java簡單實現(xiàn)SpringMVC+MyBatis分頁插件
自己最近搭建的一個SpringMVC+Mybatis的框架 屬于無實體類的框架 并實現(xiàn)了Myabtis的自動分頁和總數(shù)查詢 只要傳入分頁參數(shù)便能自動查詢總數(shù)和分頁 總數(shù)封裝在參數(shù)里面執(zhí)行查詢后可以直接從參數(shù)中獲取2015-09-09Java concurrency之LockSupport_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Java concurrency之LockSupport的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06