เมื่อคุณเข้าสู่เว็บไซต์ส่วนใหญ่คุณจะส่งข้อมูลเข้าสู่ระบบของคุณผ่านแบบฟอร์ม
แต่บางครั้งกล่องโต้ตอบการตรวจสอบการเข้าสู่ระบบจะปรากฏขึ้นโดยเบราว์เซอร์ดังแสดงในรูปด้านล่างซึ่งเป็นการตรวจสอบขั้นพื้นฐานโดยใช้ HTTP
มาดูกระบวนการรับรองนี้กันเถอะ:
ขั้นตอนที่ 1: ไคลเอนต์ส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์และเซิร์ฟเวอร์ตรวจสอบว่าผู้ใช้ได้ลงชื่อเข้าใช้และตรวจสอบแล้วหรือไม่ ถ้าไม่,
เซิร์ฟเวอร์จะส่งคืน 401 unauthozied ไปยังไคลเอนต์และเพิ่มข้อมูลในส่วนหัว "www-authenticate" ของการตอบกลับ
ดังที่แสดงในรูปด้านล่าง
ขั้นตอนที่ 3: เซิร์ฟเวอร์ใช้ชื่อผู้ใช้และรหัสผ่านในส่วนหัวการอนุญาตและทำการตรวจสอบ หากผ่านการตรวจสอบทรัพยากรจะถูกส่งไปยังลูกค้าตามคำขอ
นี่คือรหัสตัวอย่างสำหรับ Java
นำเข้า java.io.ioException; นำเข้า java.io.printwriter; นำเข้า Javax.servlet.http.httpservlet; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า javax.servlet.http.httpservletresponse; ขยาย httpservlet {โมฆะสาธารณะ doGet (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น IOException {String sessionauth = (String) request.getSession (). getAttribute ("auth"); if (sessionauth! = null) {system.out.println ("นี่คือขั้นตอนต่อไป"); nextstep (คำขอการตอบกลับ); } else {ถ้า (! checkheaderauth (คำขอ, การตอบกลับ)) {response.setstatus (401); Response.Setheader ("Cache-Control", "No-store"); Response.setDateHeader ("หมดอายุ", 0); Response.Setheader ("www-authenticate", "Realm พื้นฐาน =/" Test/""); }}} private boolean checkheaderauth (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น IOException {string auth = request.getheader ("การอนุญาต"); System.out.println ("Auth Excoded ใน Base64 คือ" + GetFrombase64 (auth)); if ((auth! = null) && (auth.length ()> 6)) {auth = auth.substring (6, auth.length ()); String decodeDauth = getFrombase64 (auth); System.out.println ("Auth Decoded จาก Base64 คือ" + DecodeDauth); request.getSession (). setAttribute ("auth", decodeDauth); กลับมาจริง; } else {return false; }} สตริงส่วนตัว getFrombase64 (สตริง s) {ถ้า (s == null) ส่งคืน null; Base64Decoder decoder = ใหม่ base64decoder (); ลอง {byte [] b = decoder.decodeBuffer (s); ส่งคืนสตริงใหม่ (b); } catch (exception e) {return null; }} โมฆะสาธารณะ NextStep (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น IOException {printwriter pw = response.getWriter (); pw.println ("<html> ขั้นตอนต่อไปการตรวจสอบคือ:" + request.getSession (). getAttribute ("auth") + "<br>"); pw.println ("<br> </html>"); } โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น IOException {doget (คำขอ, การตอบกลับ); -เมื่อคำขอมาถึงเซิร์ฟเวอร์เป็นครั้งแรกเซิร์ฟเวอร์จะไม่มีข้อมูลการตรวจสอบสิทธิ์และเซิร์ฟเวอร์จะส่งคืน 401 ที่ไม่ได้รับความช่วยเหลือจากไคลเอนต์
หลังจากการตรวจสอบแล้วให้วางข้อมูลการตรวจสอบสิทธิ์ในเซสชันและไม่จำเป็นต้องตรวจสอบสิทธิ์ในช่วงระยะเวลาความถูกต้องของเซสชันในอนาคต
ด้านบนเป็นเนื้อหาเต็มรูปแบบของรหัสอินสแตนซ์ Java สำหรับการตรวจสอบขั้นพื้นฐานที่นำเสนอโดยเครื่องมือแก้ไข ฉันหวังว่าทุกคนจะสนับสนุน wulin.com เพิ่มเติม ~