Closed wantsingZhang closed 3 years ago
图片验证码部分可不可以只生成和储存code,不发送?
你好,邮箱验证码报错的原因是因为 JavaMailSender 的约束不满足,导致 emailCodeSender Bean 没有被创建,现在已经修复。 请过几个小时,等待中央仓库同步完成,将版本升级至 1.0.1 即可。
至于图片验证码部分,虽然我不明白你为什么要这样做,不过是可以的。以下是步骤:
package com.example.captchademo;
import cn.dustlight.captcha.configurations.SimpleImageCodeSenderConfiguration;
import cn.dustlight.captcha.core.Code;
import cn.dustlight.captcha.sender.CodeSender;
import cn.dustlight.captcha.sender.SendCodeException;
import cn.dustlight.captcha.sender.SimpleImageCodeSender;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Map;
@Component("mySender")
public class MySender implements CodeSender<String> {
@Autowired
SimpleImageCodeSender imageCodeSender; // 原先的图片发送器
@Autowired
SimpleImageCodeSenderConfiguration.SimpleImageCodeSenderProperties properties; // 图片发送器的配置
@Override
public void send(Code<String> code, Map<String, Object> parameters) throws SendCodeException {
// 使用图片发送器中的 ImageHandler 生成图片
BufferedImage image = imageCodeSender.getImageHandler()
.getImage(code.getValue(),
properties.getWidth()
, properties.getHeight(),
parameters);
try {
// 然后再将图片存到自定义的位置,如 "captcha.jpg"
ImageIO.write(image, "jpg", new File("captcha.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
@RequestMapping("/test")
@SendCode(sender = @Sender("mySender")) // 使用自定义发送器 "mySender"
public void test(@CodeValue String code) {
}
图片验证码问题是因为邮箱验证报错,之前做过邮件发送demo,有源码, 验证码的话想用图片验证码生成的code发送替代,然后发现@SendCode一定会返回图片,没有找到办法处理 最后搞了个6位随机数然后存session基本解决了。
@RequestMapping("/test")
@SendCode(duration = @Duration(1000 * 60 * 5L)) // 设置有效时间为 5 分钟 (单位为毫秒)
public void test(@CodeValue String code) {
}
不用客气 😀
可能今天晚点,最迟明天,1.0.1 版本就能同步到各仓库了。如果急着用可以先引用 1.0.1-SNAPHOST 版本。
按照邮箱验证码的入门教程做 报错
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'emailCodeSender' available at cn.dustlight.captcha.Util.getBean(Util.java:18) ~[captcha-core-1.0.0.jar:na] at cn.dustlight.captcha.core.SendCodeInterceptor.before(SendCodeInterceptor.java:48) ~[captcha-core-1.0.0.jar:na]