1. نظرة عامة على رمز التحقق من الصورة:
العديد من مواقع الويب لديها التنفيذ
تأثير:
لتحسين أمن النظام
باستخدام رمز التحقق ، يمكننا أن نطلب من المستخدم إدخال النص على الصورة بعد إدخال اسم المستخدم وكلمة المرور والمعلومات الأخرى. بعد أن يخضع المستخدم ، سيقوم النظام أولاً باستخراج رمز التحقق الذي تم إنشاؤه للتو من الجلسة ومقارنته برمز التحقق الذي أدخله المستخدم. إذا كانت المقارنة متساوية ، فهذا يعني أن المستخدم قام بتسجيل الدخول من واجهة تسجيل الدخول. خلاف ذلك ، فهذا يعني أن المستخدم غير قانوني. نستخدم رمز التحقق للتأكد من أن النظام يجب تسجيل الدخول بنجاح قبل استخدامه ، وذلك لتجنب المستخدم الذي يدخل الصفحة مباشرة ليتم الوصول إليه في شريط العناوين.
بمعنى آخر ، باستخدام رمز التحقق ، يجب على المستخدم أولاً تسجيل الدخول من واجهة تسجيل الدخول.
2. طريقة تنفيذ التحقق
يتم استخدام فئتين رئيسيتين ، وهذان الفئتان مرتبطان بإخراج الصورة.
BufferedImage IM = جديد BufferEdImage (60،20 ، BufferedImage.type_int_rgb) ؛ // تمثل المعلمة الأولى IM كائن صورة // JPG تمثل نوع إخراج الصورة//استجابة. getOutputStream () تمثل دفق إخراج الاستجابة ، أي ، إذا كنت تصل إلى Servlet. ستعرض Servlet الصورة لك imageio.write (im ، "jpg" ، reponse.getOutputStream ()) ؛
3. خطوات التنفيذ
1. استخدم BufferEdImage لإنشاء صورة ، ثم استخدم إخراج Imageio ، وحددها كتنسيق JPG
BufferedImage IM = جديد BufferEdImage (60،20 ، BufferedImage.type_int_rgb) ؛ // تمثل المعلمة الأولى IM كائن صورة // JPG تمثل نوع إخراج الصورة//استجابة. getOutputStream () تمثل دفق إخراج الاستجابة ، أي ، إذا كنت تصل إلى Servlet. ستعرض Servlet الصورة لك imageio.write (im ، "jpg" ، reponse.getOutputStream ()) ؛
2. احصل على كائن رسم الصورة
Graphics g = im.getGraphics();
3. املأ منطقة الرسم
RM RMOND = New Random () ؛ Color C = New Color (RM.NextInt (255) ، RM.NextInt (255) ، RM.Nextint (255)) ؛ G.SetColor (C) ؛ // املأ لون الصورة بالكامل G.FillRect (0 ، 0 ، 60 ، 20) ؛
4. أرقام الإخراج إلى الصورة
G.SetColor (Color New (RM.NextInt (255) ، R.NextInt (255) ، Rm.NextInt (255))) ؛ G.Setfont (خط جديد ("Lishu الصيني" ، font.bold | font.italic ، 28)) ؛ g.drawstring ("8" ، 1 ، 18) ؛5. عشوائي 4 أرقام
// قم بإنشاء أرقام مكونة من 4 أرقام بشكل عشوائي لـ (int i = 0 ؛ i <4 ؛ i ++) {g.setColor (لون جديد (RM.Nextint (255) ، rm.nextint (255) ، rm.nextint (255))) ؛ G.SetFont (خط جديد ("Gungsuh" ، font.bold | font.italic ، 22)) ؛ G.DrawString (""+RM.Nextint (10) ، (I*15) +2 ، 18) ؛}6. توليد عشوائي الصينية
سلسلة str = "أولئك الذين لديهم الرعد في صدرهم ووجوه مثل بحيرة مسطحة يمكن أن يطلق عليهم جنرال" ؛ لـ (int i = 0 ؛ i <4 ؛ i ++) {g.setColor (لون جديد (rm.NextInt (255) ، rm.nextint (255) ، rm.nextint (255))) ؛ G.SetFont (خط جديد ("Gungsuh" ، font.bold | font.italic ، 15)) ؛ G.DrawString (""+str.charat (rm.NextInt (str.length ())) ، (i*15) +2 ، 18) ؛}7. كيفية تقديم رمز التحقق هذا في الصفحة:
<img src="/ImageServlet">
8. احفظ الأرقام لمقارنة تسجيل الدخول
// احفظ أربعة أرقام تم الحصول عليها في الجلسة بحيث عند تسجيل الدخول ، يتم استخدامه لمقارنة request.getSession (). setAttribute ("piccode" ، sbf.toString ()) ؛9. التحقق من تسجيل الدخول
أولاً ، من الضروري التحقق مما إذا كان المستخدم موجودًا في قاعدة البيانات. إذا كانت موجودة ، فمن الضروري أيضًا التحقق مما إذا كان رمز التحقق الذي تم إدخاله متسقًا.
بعد نجاح التحقق ، يجب إعادة توجيهه إلى صفحة التشغيل ذات الصلة.
مثال رمز:
Boolean b_exist = login.validate (اسم المستخدم ، passwd) ؛ // إذا كان المستخدم موجودًا إذا (b_exist) {string pic = ""+request.getSession (). getAttribute ("piccode") ؛ // قارن رمز التحقق إذا (! pic.equals ("") && pic.equals (رمز)) {// معلومات المستخدم في الجلسة لاستخدام آخر request.getSession (). setAttribute ("اسم المستخدم" ، اسم المستخدم) ؛ استجابة. }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون محتوى هذه المقالة من بعض المساعدة في دراسة أو عمل الجميع. آمل أيضًا دعم wulin.com أكثر!