欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)登錄驗(yàn)證碼功能

 更新時(shí)間:2021年10月21日 11:35:34   作者:玖月夢(mèng)沉  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)登錄驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 不看后悔!揭秘游戲服務(wù)器開(kāi)發(fā)

    不看后悔!揭秘游戲服務(wù)器開(kāi)發(fā)

    剛開(kāi)始時(shí)以為做游戲服務(wù)器和做web差不多,但是經(jīng)過(guò)一段時(shí)間之后,才發(fā)現(xiàn)代碼太多,太亂了,這里我把一些游戲開(kāi)發(fā)方面的東西整理一下,希望能對(duì)那些想做游戲服務(wù)器開(kāi)發(fā)的朋友有所幫助
    2021-06-06
  • Java高級(jí)面試題小結(jié)

    Java高級(jí)面試題小結(jié)

    本文主要介紹了一些在Java面試過(guò)程中的一些高級(jí)面試題,包括對(duì)部分名詞的釋義及代碼解析,具有一定收藏價(jià)值,需要的朋友可以參考下
    2017-09-09
  • Springboot集成SSE實(shí)現(xià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-11
  • springboot如何通過(guò)不同的策略動(dòng)態(tài)調(diào)用不同的實(shí)現(xiàn)類

    springboot如何通過(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)

    這篇文章主要介紹了Java8并行流(parallelStream)的注意點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring Boot 3 整合 Spring Cloud Gateway實(shí)踐過(guò)程

    Spring Boot 3 整合 Spring Cloud 

    本文介紹了如何使用SpringCloudAlibaba2023.0.0.0版本構(gòu)建一個(gè)微服務(wù)網(wǎng)關(guān),包括統(tǒng)一路由、限流防刷和登錄鑒權(quán)等功能,并通過(guò)一個(gè)項(xiàng)目實(shí)例進(jìn)行詳細(xì)說(shuō)明,感興趣的朋友一起看看吧
    2025-02-02
  • java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信

    java使用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ò)的解決方法

    這篇文章主要介紹了解決fastjson泛型轉(zhuǎn)換報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • FastJson實(shí)現(xiàn)駝峰下劃線相互轉(zhuǎn)換方法詳解

    FastJson實(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-01
  • Java設(shè)計(jì)模式之狀態(tài)模式State Pattern詳解

    Java設(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

最新評(píng)論