Use kaptcha para completar el código de verificación dinámica de inicio de sesión

Renderings

 Haga clic para alternar un efecto del código de verificación

Portada

Thymeleaf se usa aquí

Implementación de backend

Importar dependencias de pom

        <! - 验证 码-> 
        < dependencia > 
            < groupId > com.github.penggle </ groupId > 
            < artifactId > kaptcha </ artifactId > 
            < versión > 2.3.2 </ versión > 
        </ dependency >

Crear clase de configuración kaptcha

importar com.google.code.kaptcha.impl.DefaultKaptcha;
importar com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component; 

import java.util.Properties; 

@Component 
public  class KaptchaConfig { 
    @Bean 
    public DefaultKaptcha getDefaultKaptcha () { 
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha (); 
        Propiedades propiedades = nuevas Propiedades (); 
        properties.put ( "kaptcha.border", "no" );
        properties.put ( "kaptcha.textproducer.font.color", "negro" ); 
        properties.put ( "kaptcha.image.width", "150" ); 
        properties.put ( "kaptcha.image.height", "40" ); 
        properties.put ( "kaptcha.textproducer.font.size", "30" ); 
        properties.put ( "kaptcha.session.key", "verifiedCode" );
        // 设置 验证 码 字符 数量 
        properties.put ("kaptcha.textproducer.char.space", "5" ); 
        Config config = nueva Config (propiedades); 
        defaultKaptcha. 

        setConfig (config); return defaultKaptcha; 
    }
}

Crear un controlador para recibir una solicitud de código de verificación

importar com.google.code.kaptcha.impl.DefaultKaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; 

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; 

@Controller 
public  class CommonController { 

    @Autowired
    Private DefaultKaptcha captchaProducer; 

    @GetMapping ( "/ common / kaptcha" )
     public  void defaultKapcha (HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) lanza Exception {
         byte [] captchaOutputStream = null ; 
        ByteArrayOutputStream imgOutputStream = new ByteArrayOutputStream ();
        intente {
             // 生产 验证 码 字符串 并 保存 到 sesión 中 
            Cadena verificar Código = captchaProducer.createText (); 
            httpServletRequest.getSession (). setAttribute ( "verificarCode", código de verificación);
            // 根据 验证 码 字符 创建 图片 
            BufferedImage challenge = captchaProducer.createImage (generateCode);
            // 图片 写入 
            ImageIO.write (desafío, "jpg" , imgOutputStream); 
        } catch (IllegalArgumentException e) { 
            httpServletResponse.sendError (HttpServletResponse.SC_NOT_FOUND); 
            volver ; 
        } 
        captchaOutputStream = imgOutputStream.toByteArray (); 
        httpServletResponse.setHeader ( "Cache-Control", "no-store" ); 
        httpServletResponse.setHeader ( "Pragma", "no-cache"
        httpServletResponse.setDateHeader ( "Expira", 0 ); 
        httpServletResponse.setContentType ( "image / jpeg" ); 
        ServletOutputStream responseOutputStream = httpServletResponse.getOutputStream (); 
        responseOutputStream.write (captchaOutputStream); 
        responseOutputStream.flush (); 
        responseOutputStream.close (); 
    } 
}

 

Supongo que te gusta

Origin www.cnblogs.com/xiaowangtongxue/p/12686869.html
Recomendado
Clasificación