5. Больше настроек
5.1. Тип капчи
captcha.text(); // Получаем символ капчи.
captcha.textChar(); // Получаем массив символов капчи.*
*gif-тип:*
GifCaptcha captcha = new GifCaptcha(130, 48);*
*китайский тип:*
ChineseCaptcha captcha = new ChineseCaptcha(130, 48);*
*китайский gif-тип:*
ChineseGifCaptcha captcha = new ChineseGifCaptcha(130, 48);*
*арифметический тип:*
ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);
captcha.setLen(3); // Сколько цифр в числе: по умолчанию две.
captcha.getArithmeticString(); // Получаем формулу: 3+2=?
captcha.text(); // Получаем результат формулы: 5
captcha.out(outputStream); // Выводим капчу.*
> Обратите внимание: арифметическая капча имеет параметр len, который обозначает количество цифр в числе. Для других типов капч параметр len обозначает длину капчи в символах. В арифметической капче text() возвращает результат формулы, поэтому вы должны сохранить его в сессии, а не саму формулу.*
**5.2. Типы символов капчи**
| Тип | Описание |
|:--- | :--- |
TYPE_DEFAULT | Смешанные цифры и буквы |
TYPE_ONLY_NUMBER | Только цифры |
TYPE_ONLY_CHAR | Только буквы |
TYPE_ONLY_UPPER | Только заглавные буквы |
TYPE_ONLY_LOWER | Только строчные буквы |
TYPE_NUM_AND_UPPER | Цифры и заглавные буквы |
Использование:
SpecCaptcha captcha = new SpecCaptcha(130, 48, 5); captcha.setCharType(Captcha.TYPE_ONLY_NUMBER);
> Эффект будет только для SpecCaptcha и GifCaptcha.*
**5.3. Настройка шрифта**
Встроенные шрифты:
| Шрифт | Эффект |
|:---|:---|
Captcha.FONT_1 | |
Captcha.FONT_2 | |
Captcha.FONT_3 | |
Captcha.FONT_4 | |
Captcha.FONT_5 | |
Captcha.FONT_6 | |
Captcha.FONT_7 | |
Captcha.FONT_8 | |
Captcha.FONT_9 | |
Captcha.FONT_10 | |
Использование:
SpecCaptcha captcha = new SpecCaptcha(130, 48, 5);
// Устанавливаем встроенный шрифт captcha.setFont(Captcha.FONT_1);
// Устанавливаем системный шрифт captcha.setFont(new Font("楷体", Font.PLAIN, 28));
**5.4. Вывод base64-кодирования**
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5); specCaptcha.toBase64();
// Если вы не хотите иметь заголовок data:image/png;base64, specCaptcha.toBase64(""); // Добавьте пустой параметр.*
5.5. Вывод в файл
FileOutputStream outputStream = new FileOutputStream(new File("C:/captcha.png"))
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
specCaptcha.out(outputStream);
6. Использование в проекте с разделением на фронтэнд и бэкенд
Для проектов с разделением на фронтенд и бэкенд рекомендуется не хранить данные в сессии, а использовать Redis. Redis требует один ключ, который можно вернуть во фронтенд для проверки ввода:
@Controller
public class CaptchaController {
@Autowired
private RedisUtil redisUtil;
@ResponseBody
@RequestMapping("/captcha")
public JsonResult captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
String verCode = specCaptcha.text().toLowerCase();
String key = UUID.randomUUID().toString();
// Храним в Redis и устанавливаем срок действия 30 минут
redisUtil.setEx(key, verCode, 30, TimeUnit.MINUTES);
// Возвращаем ключ и base64 во фронтенд
return JsonResult.ok().put("key", key).put("image", ```
specCaptcha.toBase64());
}
@ResponseBody
@PostMapping("/login")
public JsonResult login(String username,String password,String verCode,String verKey){
// 获取redis中的验证码
String redisCode = redisUtil.get(verKey);
// 判断验证码
if (verCode==null || !redisCode.equals(verКод.trim().toLowerCase())) {
return JsonResult.error("Проверка кода не удалась");
}
}
}
Фронтенд использует ajax для получения проверочного кода:
<img id="verImg" width="130px" height="48px"/>
<script>
var verKey;
// Получение проверочного кода
$.get('/captcha', function(res) {
verKey = res.key;
$('#verImg').attr('src', res.image);
},'json');
// Вход в систему
$.post('/login', {
verKey: verKey,
verCode: '8u6h',
username: 'admin',
password: 'admin'
}, function(res) {
console.log(res);
}, 'json');
</script>
RedisUtil можно найти здесь: https://gitee.com/whvse/RedisUtil
Наследуйте Captcha
, чтобы реализовать метод out
. Китайский проверочный код может наследовать ChineseCaptchaAbstract
, а арифметический проверочный код — ArithmeticCaptchaAbstract
.
2019-08-23 (v1.6.2)
Добавлено 10 красивых встроенных шрифтов, которые не зависят от системных шрифтов.
Добавлен арифметический проверочный код, количество цифр в операции можно настроить.
Добавлена функция вывода base64-кодирования.
В качестве мешающей линии добавлена кривая Безье.
2018-08-09 (v1.5.0)
Добавлены конфигурации с чистыми заглавными буквами, чистыми строчными буквами, цифрами и заглавными буквами.
Добавлены китайский проверочный код и китайский GIF-проверочный код.
Добавлен эффект антиалиасинга, оптимизирован цвет текста.
Для удобства использования в веб-проектах добавлен CaptchaUtil
.
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.