Генерация и проверка изображений кода проверки фронтального кода реализована в Springboot для вашей ссылки. Конкретный контент заключается в следующем
1. Эффект
Нажмите на код проверки, чтобы получить новый код проверки
2. Принцип
Фон генерирует изображение кода проверки и передает изображение на стойку регистрации.
Фон сохраняет контент кода проверки в сеансе.
После входа в код проверки на стойке регистрации он будет передан на фон и получен код проверки, сохраненный в сеансе для проверки.
Обратите внимание, что простой текст кода проверки не может быть передан на переднюю часть. Содержание фронта является прозрачным и небезопасным. Код проверки используется для предотвращения роботов, а не только людей. Если код проверки четко передается на переднюю часть, он будет легко взломать.
3. Generation
Инструмент «Генерация кода проверки» класс randomvalidatecodeutil
public class RandomValidateCodeUtil { public static final String RANDOMCODEKEY= "RANDOMVALIDATECODEKEY";// key private String randString = "0123456789";// randomly generate a string with only numbers private String // private String randString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";// randomly generate a string with only letters // private String randString = "0123456789abcdefghijklmnopqrStuvwxyz"; // случайные сгенерированные строки чисел и буквы Private int width = 95; // Ширина изображения Private int hight = 25; // Высота изображения Private Linesize = 40 ;// Число интерференционных линий private int stringnum = 4; // Случайное количество символов частного строки LoggerFactory.getLogger (randomValidateCodeutil.class); private случайный случайный случайный random = new Random (); / *** Получить Font*/ private font getFont () {return new Font ("fixedsys", font.center_baseline, 18); } / *** Получить цвет* / private color getRandcolor (int fc, int bc) {if (fc> 255) fc = 255; if (bc> 255) bc = 255; int r = fc + random.nextint (bc - fc - 16); int g = fc + random.nextint (bc - fc - 14); int b = fc + random.nextint (bc - fc - 18); вернуть новый цвет (r, g, b); } / *** Сгенерировать случайное изображение* / public void getRandCode (httpservlectrequest, httpservletresponse response) {httpsession session = request.getSession (); // класс BufferedImage - это класс изображений с буфером, а класс изображений - это класс, используемый для описания информации о изображении BufferedImage Image = new BufferedImage (ширина, высота, bufferedimage.type_int_bgr); Graphics g = image.getGraphics (); // генерировать графический объект объекта изображения. You can perform various drawing operations on the image by modifying the object g.fillRect(0, 0, width, height);//Image size g.setFont(new Font("Times New Roman", Font.ROMAN_BASELINE, 18));//Font size g.setColor(getRandColor(110, 133));//Font color//Draw interference lines for (int i = 0; i <= lineSize; i ++) {drawline (g); } // Нарисуйте RandomString RandomSting = ""; for (int i = 1; i <= stringNum; i ++) {RandomString = Shorpling (g, RandomString, i); } logger.info (RandomString); // Сохранить сгенерированную случайную строку в сеанс сеанса.removeatTribute (randomCodeKey); session.setattribute (RandomCodeKey, RandomString); g.dispose (); try {// выводить изображение в памяти клиенту через Flow Form Form ImageIo.Write (image, "jpeg", response.getOutputStream ()); } catch (Exception e) {logger.error ("Не удалось вывести изображение в памяти клиенту через Flow >>>>", e); }} / *** Нарисуйте строку* / приватная строковая шнурка (графика g, string randomString, int i) {g.setfont (getFont ()); g.setcolor (новый цвет (случайный.nextint (101), random.nextint (111), случайный .nextint (121))); String rand = string.valueof (getrandomString (random.nextint (randstring .length ()))); RandomString += RAND; g.translate (random.nextint (3), random.nextint (3)); G.DrawString (Rand, 13 * I, 16); вернуть случайное строение; } / *** Нарисуйте интерференционную линию* / private void drawline (графика g) {int x = random.nextint (width); int y = random.nextint (высота); int xl = random.nextint (13); int yl = random.nextint (15); g.drawline (x, y, x + xl, y + yl); } / *** Получить случайные символы* / public String getRandomString (int num) {return string.valueof (randstring.charat (num)); }}В контроллере вызовы метод для генерации изображения кода проверки и передачи изображения на переднюю часть
/*** Сгенерировать код проверки*/@requestMapping (value = "/getVerify") public void getVerify (httpservletrequest, httpservletresponse response) {try {response.setContenttype («Image/jpeg»); // Установите соответствующий тип и сообщите Browser на вывод содержимого в качестве изображения. «Нет-cache»); // Установить информацию заголовка ответа, чтобы сообщить браузеру, чтобы он не кэшировал этот контент. response.setDateHeader («истекает», 0); RandomValidateCodeutil randomValidateCode = new randomValidateCodeutil (); randomValidateCode.getRandCode (запрос, ответ); // Метод изображения проверки вывода} catch (Exception e) {logger.error («Не удалось получить код проверки >>>>», e); }} Фронт-энд Получите изображение кода проверки
HTML
<div> <div> <input type = "tel" id = "verify_input" waceholder = "Пожалуйста, введите код проверки" maxlength = "4"> </div> </div> <div> <a href = "javascript: void (0);" rel = "внешний nofollow"> <id id = "imgverify" src = "" onclick = "getVerify (this);"> </a> </div> </div>
младший
// Получить функцию кода проверки getVerify (obj) {obj.src = httpurl + "/sys/getVerify?" + Math.random ();}Каждый раз, когда вы нажимаете на изображение и впервые обновляете интерфейс кода проверки, просто вызовите метод getVerify ().
4. Проверка кода проверки
Фронт-энд получает код проверки, введенный пользователем, и передает его на фон для проверки.
Фоновая проверка код
/*** Забыли код проверки страницы пароля*/@requestmapping (value = "/cectVerify", method = requestMethod.post, headers = "Accept = Application/json") public boolean ceckverify (@requestbody map <string, объект> requestmap, httpsession session) {try {// get string nut ountstr inputstr = wontpring (intoptring). String random = (string) session.getAttribute ("randomValidateCodeKey"); if (random == null) {return false; } if (random.equals (inputstr)) {return true; } else {return false; }} catch (Exception e) {logger.error ("Проверка проверки проверки кода", e); вернуть ложь; }}После проверки фона верните результат проверки фронтальной проверки TRUE или FALSE.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.