Bagaimana Java Menerapkan Fungsi Verifikasi Kode Verifikasi? Dalam kehidupan sehari -hari, kode verifikasi dapat dilihat di mana -mana, dan ia dapat melindungi keamanan akun sampai batas tertentu. Jadi bagaimana dia mencapainya?
Java mengimplementasikan fungsi verifikasi kode verifikasi pada kenyataannya sangat sederhana: kelas grafis digunakan untuk menggambar huruf pada artboard, secara acak memilih sejumlah huruf untuk menghasilkannya secara acak, dan kemudian secara acak menghasilkan beberapa baris interferensi pada artboard.
Pertama, tulis kode verifikasi untuk menghasilkan kelas bantuan, yang digunakan untuk menggambar huruf acak:
impor java.awt.color; impor java.awt.font; impor java.awt.graphics; impor java.awt.image.bufferedimage; impor java.io.ioException; impor java.io.outputStream; impor java.util.random; impor javax.imageio.imageio; Public Final Class GraphIChelper { / ** * Mengembalikan kode verifikasi yang dihasilkan dalam bentuk string, dan mengeluarkan gambar pada saat yang sama * * @param lebar * Lebar gambar * @param tinggi * Tinggi gambar (string public @@param @@param output * aliran gambar (gambar akan menjadi output ke aliran ini) * @param output * output stream output (gambar akan menjadi output ke aliran ini) lebar, tinggi int final, string final imgType, outputStream output) {stringBuffer sb = new stringBuffer (); Acak acak = acak baru (); BufferedImage Image = BufferedImage baru (lebar, tinggi, bufferedImage.type_int_rgb); Grafik grafis = image.getGraphics (); graphic.setColor (color.getColor ("f8f8f8")); graphic.fillrect (0, 0, lebar, tinggi); Color [] color = new color [] {color.blue, color.gray, color.green, color.red, color.black, color.orange, color.cyan}; // menghasilkan garis interferensi pada "artboard" (50 adalah jumlah garis) untuk (int i = 0; i <50; i ++) {graphic.setColor (warna [random.nextint (colors.length)]); final int x = random.nextInt (lebar); final int y = random.nextInt (tinggi); final int w = random.nextInt (20); final int h = random.nextInt (20); final int Signa = random.nextboolean ()? 1: -1; final int Signb = random.nextBoolean ()? 1: -1; graphic.drawline (x, y, x + w * Signa, y + h * Signb); } // Gambar huruf -huruf di "Artboard" Graphic.setFont (font baru ("Comic Sans MS", Font.Bold, 30)); untuk (int i = 0; i <6; i ++) {final int temp = random.nextInt (26)+97; String s = string.valueof ((char) temp); SB.Append (s); graphic.setColor (warna [random.nextint (colors.length)]); graphic.drawstring (s, i * (lebar / 6), tinggi - (tinggi / 3)); } graphic.dispose (); coba {ImageIo.write (Image, ImgType, Output); } catch (ioException e) {e.printstacktrace (); } return sb.toString (); }} Selanjutnya, buat servlet untuk memperbaiki ukuran gambar, memproses skenario penggunaan kode verifikasi, dan menangkap kode verifikasi yang dihasilkan oleh halaman (kode QR yang ditangkap konsisten dengan kode verifikasi yang dimasukkan oleh pengguna sebelum dapat dilewati).
impor java.io.ioException; impor java.io.outputStream; impor javax.servlet.servletException; impor javax.servlet.annotation.webservlet; impor javax.servlet.http.httpservlet; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; impor javax.servlet.http.httpsession; @WebServlet (urlpatterns = "/verify/regist.do") kelas publik VerifyCodeserVlet memperluas httpservlet {private static final long serialversionuid = 339856050158431737L; @Override Protected Void Service (permintaan httpservletRequest, httpservletResponse response) melempar servletException, ioException {// Dapatkan objek sesi yang sesuai dengan permintaan saat ini httpsession sesi = request.getSession (); // Dapatkan URI dari Permintaan (Seragam Sumber Daya Pengidentifikasi) String URI = Request.getRequesturi (); System.out.println ("Halo:" + URI); Lebar int akhir = 180; // Lebar gambar Tinggi int final = 40; // gambar tinggi string final imgtype = "jpeg"; // Tentukan format gambar (tidak mengacu pada tipe mime) outputStream output = response.getOutputStream (); // Dapatkan aliran output yang dapat mengembalikan gambar ke klien // (byte stream) // Buat gambar kode verifikasi dan mengembalikan string pada kode string gambar = graphichelper.create (lebar, tinggi, imgtype, output); System.out.println ("Konten kode verifikasi:" + kode); // Buat asosiasi antara URI dan kode verifikasi yang sesuai (disimpan dalam atribut objek sesi saat ini) sesi.setAttribute (URI, kode); System.out.println (session.getAttribute (URI)); }} Kemudian tulis halaman pendaftaran HTML untuk memeriksanya:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register</title> <link rel="stylesheet" href="styles/general.css" > <link rel="stylesheet" href="styles/cell.css"> <link rel="stylesheet" href="styles/form.css"> <script type = "text/javascript" src = "js/ref.js"> </script> <style type = "text/css"> .logo-container {margin-top: 50px; } .logo-container img {lebar: 100px; } .message-container {height: 80px; } .link-container {height: 40px; Line-Height: 40px; } .link-container a {text-decoration: none; } </tyle> </head> <body> <div> <form Action = "/wendao/regist.do" Method = "Post"> <viv> <!-Formulir Pendaftaran Mulai-> <van> <span> <i> </i> </span> <span style = "Text-Align: left;"> <input type = "Text" name = "USPANEN =" USPERN = "TEXTHOLEN; <div> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <pan> </input type = "kata sandi" nama "name =" Konfirmasi "Placeer =" SPAN> "SPAN>" SPAN> "SPAN> type = "kata sandi" name = "konfirmasi" placeholder = "Harap konfirmasi kata sandi"> </span> </div> <div> <span> <input type = "text" name = "verifyCode" placeholder = "Harap masukkan kode verifikasi"> </span> <span style = "text-align: center;"> <img src = "/demo) (span) ogner (center;"> <img src = "" "" </span> </div> <div style = "border: none;"> <span style = "text-align: left"> <input type = "reset" value = "reset"> </span> <span style = "text-align: right;"> <input type = "kirim" value = "register"> </span> </div> </div> </div> end end end " </html>Efeknya adalah sebagai berikut:
Ketika kami mengklik untuk menyegarkan halaman, kode verifikasi juga akan berubah, tetapi ketika kami tidak dapat melihat kode verifikasi dengan jelas, kami akan menyegarkan selama kami mengklik kode verifikasi. Dengan cara ini, penyegaran lokal dapat dicapai dengan menggunakan JavaScript.
Dalam <img src = "/demo/verifikasi/regist.do">, tambahkan tanda tanya dan serangkaian angka akhiran. Saat menyegarkan, biarkan angka akhiran terus berubah, dan kode verifikasi yang dibentuk juga akan terus berubah. Salah satu metode yang dapat kita gunakan adalah mengganti angka akhiran dengan tanggal. Tanggal mendapatkan waktu setempat, dan waktu berubah kapan saja, yang memastikan bahwa kode verifikasi refresh dapat berubah kapan saja.
Kodenya adalah sebagai berikut:
fungsi myrefersh (e) {const source = e.src; // Dapatkan konten di src //console.log asli ("Sumber:" + Sumber); var index = source.indexOf ("?"); // Temukan lokasi penampilan pertama (return -1 jika tidak ada) //console.log ("index:" + index); if (index> -1) {// jika ditemukan?, masukkan var internal s = Source.substring (0, index); // mencegat konten sebelum indeks dari sumber (indeks dan konten setelah indeks dibuang) //console.log ("s:" + s); var date = new date (); // Buat instance objek tanggal var time = date.getTime (); // Dapatkan nilai milidetik yang sesuai dengan waktu ini dari instance yang baru dibuat dari objek tanggal e.src = s + "? Time =" + Time; // Ganti alamat ekor pada src //console.log (e.src); } else {var date = new date (); e.src = Source + "? Time =" + date.getTime (); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.