java實(shí)現(xiàn)登錄驗(yàn)證碼功能
本文實(shí)例為大家分享了java實(shí)現(xiàn)登錄驗(yàn)證碼功能的具體代碼,供大家參考,具體內(nèi)容如下
登錄驗(yàn)證碼
登錄驗(yàn)證是大多數(shù)登錄系統(tǒng)都會(huì)用到的一個(gè)功能,它的驗(yàn)證方式也是有很多種,例如登錄驗(yàn)證碼,登錄驗(yàn)證條及拼圖拖動(dòng)塊等,這里講講輸入登錄驗(yàn)證碼的方式來(lái)實(shí)現(xiàn)的例子。首先,kaptcha這是一個(gè)開(kāi)源的驗(yàn)證碼實(shí)現(xiàn)庫(kù),利用這個(gè)庫(kù)可以非常方便的實(shí)現(xiàn)驗(yàn)證碼功能。
1.添加依賴
在pom文件下添加kaptcha依賴包
<!-- https://mvnrepository.com/artifact/com.github.axet/kaptcha --> <dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactId> <version>0.0.9</version> </dependency>
2.添加配置
新建config包,在該包下創(chuàng)建kaptcha配置類,配置驗(yàn)證碼的一些生成屬性。
KaptchaConfig.java
/** * @author: yzy * @Date: 2020/6/11 10:41 * @Description: 驗(yàn)證碼的配置 */ @Configuration public class CaptchaConfig { @Bean public DefaultKaptcha producer() { Properties properties = new Properties(); properties.put("kaptcha.border","no"); properties.put("kaptcha.textproducer.font.color","black"); properties.put("kaptcha.textproducer.char.space","5"); Config config = new Config(properties); DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); defaultKaptcha.setConfig(config); return defaultKaptcha; } }
3.生成代碼
新建一個(gè)控制器,提供系統(tǒng)登錄相關(guān)的API,在其中添加驗(yàn)證碼生成接口。
LoginController.java
/** * @author: yzy * @Date: 2020/6/11 10:58 * @Description: 登錄控制器 */ @RestController public class LoginController { @Resource private Producer producer; /** * @Description: 驗(yàn)證碼生成接口 * @Author: yzy * @Date: 2020/6/11 11:00 * @Param: response * @Param: request * @Return: void * @Exception * */ @RequestMapping(value = "/captcha.jpg",method = RequestMethod.GET) public void captcha(HttpServletResponse response, HttpServletRequest request) { /** * Cache-Control指定請(qǐng)求和響應(yīng)遵循的緩存機(jī)制 * no-store:用于防止重要的信息被無(wú)意的發(fā)布。在請(qǐng)求消息中發(fā)送將使得請(qǐng)求和響應(yīng)消息都不使用緩存。 * no-cache:指示請(qǐng)求或響應(yīng)消息不能緩存 */ response.setHeader("Cache-Control","no-store,no-cache"); // 設(shè)置輸出流內(nèi)容格式為圖片格式.image/jpeg,圖片格式用于生成圖片隨機(jī)碼 response.setContentType("image/jpeg"); // 生成文字驗(yàn)證碼 String text = producer.createText(); // 生成圖片驗(yàn)證碼 BufferedImage image = producer.createImage(text); // 保存驗(yàn)證碼到session中 request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY,text); ServletOutputStream outputStream = null; try { outputStream = response.getOutputStream(); ImageIO.write(image,"jpg",outputStream); } catch (IOException e) { e.printStackTrace(); } IOUtils.closeQuietly(outputStream); } }
測(cè)試接口
編譯成功后,訪問(wèn)http://localhost:8010/swagger-ui.html,進(jìn)入swagger測(cè)試頁(yè)面,測(cè)試結(jié)果如圖:
這樣就大功告成了!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java 隨機(jī)生成驗(yàn)證碼(支持大小寫字母、數(shù)字、隨機(jī)字體)的實(shí)例
- java 圖片驗(yàn)證碼的實(shí)現(xiàn)代碼
- java登錄驗(yàn)證碼實(shí)現(xiàn)代碼
- Java實(shí)現(xiàn)驗(yàn)證碼具體代碼
- java實(shí)現(xiàn)驗(yàn)證碼類生成中文驗(yàn)證碼
- java生成圖片驗(yàn)證碼實(shí)例代碼
- java圖片驗(yàn)證碼生成教程詳解
- Java實(shí)現(xiàn)圖片驗(yàn)證碼具體代碼
- Java實(shí)現(xiàn)簡(jiǎn)單文字驗(yàn)證碼以及人機(jī)驗(yàn)證
相關(guān)文章
Springboot集成SSE實(shí)現(xiàn)單工通信消息推送流程詳解
SSE簡(jiǎn)單的來(lái)說(shuō)就是服務(wù)器主動(dòng)向前端推送數(shù)據(jù)的一種技術(shù),它是單向的,也就是說(shuō)前端是不能向服務(wù)器發(fā)送數(shù)據(jù)的。SSE適用于消息推送,監(jiān)控等只需要服務(wù)器推送數(shù)據(jù)的場(chǎng)景中,下面是使用Spring Boot來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的模擬向前端推動(dòng)進(jìn)度數(shù)據(jù),前端頁(yè)面接受后展示進(jìn)度條2022-11-11springboot如何通過(guò)不同的策略動(dòng)態(tài)調(diào)用不同的實(shí)現(xiàn)類
這篇文章主要介紹了springboot如何通過(guò)不同的策略動(dòng)態(tài)調(diào)用不同的實(shí)現(xiàn)類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02基于Java8并行流(parallelStream)的注意點(diǎn)
這篇文章主要介紹了Java8并行流(parallelStream)的注意點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信
這篇文章主要為大家詳細(xì)介紹了java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06解決fastjson泛型轉(zhuǎn)換報(bào)錯(cuò)的解決方法
這篇文章主要介紹了解決fastjson泛型轉(zhuǎn)換報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11FastJson實(shí)現(xiàn)駝峰下劃線相互轉(zhuǎn)換方法詳解
這篇文章主要介紹了使用FastJson進(jìn)行駝峰下劃線相互轉(zhuǎn)換寫法及誤區(qū),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01Java設(shè)計(jì)模式之狀態(tài)模式State Pattern詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之狀態(tài)模式State Pattern,狀態(tài)模式允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候改變其行為。這個(gè)對(duì)象看上去就像是改變了它的類一樣2022-11-11