عند تسجيل الدخول إلى موقع الويب ، معظم الوقت ، تقوم بإرسال معلومات تسجيل الدخول الخاصة بك من خلال نموذج.
ولكن في بعض الأحيان ، تظهر مربع حوار التحقق من تسجيل الدخول بواسطة المتصفح ، كما هو موضح في الشكل أدناه ، وهو المصادقة الأساسية باستخدام HTTP.
دعونا نلقي نظرة على عملية هذه الشهادة:
الخطوة 1: يرسل العميل طلب HTTP إلى الخادم ، ويتحقق الخادم ما إذا كان المستخدم قد قام بتسجيل الدخول والتحقق منه. إذا لم يكن كذلك ،
سيقوم الخادم بإرجاع 401 غير موزعة إلى العميل وإضافة معلومات في رأس "www-authenticate" من الاستجابة.
كما هو مبين في الشكل أدناه.
الخطوة 3: يأخذ الخادم اسم المستخدم وكلمة المرور في رأس التفويض ويقوم بالتحقق. إذا تم تمرير التحقق ، فسيتم إرسال المورد إلى العميل وفقًا للطلب.
هنا رمز عينة لجافا
استيراد java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest يمتد httpservlet {public void dogge (httpservletrequest request ، httpservletresponse) يلقي ioException {String SessionAuth = (string) request.getSession (). getAttribute ("Auth") ؛ if (SessionAuth! = null) {system.out.println ("هذه هي الخطوة التالية") ؛ NextStep (طلب ، استجابة) ؛ } else {if (! checkheaderauth (request ، response)) {response.setStatus (401) ؛ استجابة. استجابة. استجابة. }}} private boolean checkheaderauth (طلب httpservletrequest ، استجابة httpservletresponse) يلقي ioException {string auth. System.out.println ("Auth المشفر في BASE64 IS" + getFrombase64 (AUTH)) ؛ if ((auth! = null) && (auth.length ()> 6)) {auth = auth.subString (6 ، auth.length ()) ؛ سلسلة decodedauth = getFrombase64 (Auth) ؛ System.out.println ("Auth Decoded from BASE64" + decodedauth) ؛ request.getSession (). setAttribute ("Auth" ، decodedauth) ؛ العودة صحيح. } آخر {return false ؛ }} سلسلة خاصة getFrombase64 (سلسلة s) {if (s == null) return null ؛ BASE64Decoder Decoder = new BASE64DECODER () ؛ حاول {byte [] b = decoder.decodeBuffer (s) ؛ إرجاع سلسلة جديدة (ب) ؛ } catch (استثناء e) {return null ؛ }} public void nextStep (httpservletrequest request ، httpservletresponse) يلقي ioException {printWriter pw = response.getWriter () ؛ pw.println ("<html> الخطوة التالية ، المصادقة هي:" + request.getSession (). getAttribute ("auth") + "<br>") ؛ pw.println ("<br> </html>") ؛ } public void dopost (httpservletrequest request ، httpservletresponse) يلقي iOexception {doget (request ، response) ؛ }}عندما يصل الطلب لأول مرة إلى الخادم ، لا يحتوي الخادم على معلومات المصادقة ، وسيقوم الخادم بإرجاع 401 غير مصادفة للعميل.
بعد المصادقة ، ضع معلومات المصادقة في الجلسة ، وليس هناك حاجة للمصادقة خلال فترة صحة الجلسة في المستقبل.
ما سبق هو المحتوى الكامل لرمز مثيل Java للمصادقة الأساسية التي يقدمها لك المحرر. آمل أن يدعم الجميع wulin.com أكثر ~