Genere el código de verificación con el método del paquete guía

Genere el código de verificación con el método del paquete guía

Recientemente, descubrí que el método del paquete guía genera el código de verificación. No es muy novedoso, pero solo hay un punto. Hay que prestar atención al método de cálculo de la cadena usando JavaScript. Funciona.

Paso 1: paquete de guía
  <!--kaptcha-->
        <dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
        </dependency>
Paso 2: la capa de control emite imágenes hacia afuera
@GetMapping(value = "/verifyCode")
    @ResponseBody
    public void verifyCode(HttpServletResponse response, User user, @RequestParam("goodsId") long goodsId) {
        BufferedImage image = miaoshaOrderService.createVerifyCode(user, goodsId);
        try {
            OutputStream out = response.getOutputStream();
            ImageIO.write(image, "jpg", out);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Paso 3: generar código de verificación en la capa de servicio
 // 生成验证码图片
    public BufferedImage createVerifyCode(User user, Long goodsId) {
        DefaultKaptcha defaultKaptcha = kaptchaConfig.getDefaultKaptcha();
        String text = generateText();
        redisService.set(MiaoshaOrderPrefix.verifyCode, "" + user.getId() + goodsId, eval(text));
        return defaultKaptcha.createImage(text);
    }

    // 生成验证码文本
    public String generateText() {
        char opt[] = new char[]{'+', '-', '*'};
        Random random = new Random();
        int num1 = random.nextInt(9) + 1;
        int num2 = random.nextInt(9) + 1;
        int num3 = random.nextInt(9) + 1;
        char opt1 = opt[random.nextInt(3)];
        char opt2 = opt[random.nextInt(3)];
        return "" + num1 + opt1 + num2 + opt2 + num3;
    }

    public Integer eval(String expression) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        try {
            return (Integer) engine.eval(expression);
        } catch (ScriptException e) {
            e.printStackTrace();
            return null;
        }
    }
Paso 4: configuración del código de verificación
@Configuration
public class KaptchaConfig {

    @Bean
    public DefaultKaptcha getDefaultKaptcha() {
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        Properties properties = new Properties();
        properties.setProperty("kaptcha.border", "no");
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        properties.setProperty("kaptcha.session.key", "code");
        //字体颜色
        properties.setProperty("kaptcha.textproducer.font.color", "red");
        //干扰线
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.DefaultNoise");
        //干扰线颜色
        properties.setProperty("kaptcha.noise.color", "red");
        properties.setProperty("kaptcha.textproducer.char.space", "4");
        
        Config config = new Config(properties);
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }
}

Cabe señalar aquí: el soporte de script está integrado. Es decir, la función eval () aquí es una función para calcular una cadena de caracteres. Puede prestar atención para poder usarlo más tarde.

67 artículos originales publicados · Me gusta12 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/m0_37635053/article/details/105365313
Recomendado
Clasificación