บทความนี้เป็นบทความเกี่ยวกับการดำเนินการที่เกี่ยวข้องกับการเชื่อมต่อ LDAP ในซีรี่ส์ Spring Boot มันเกี่ยวข้องกับการใช้ ODM ขั้นพื้นฐานเพื่อใช้การเพิ่ม LDAP การลบการปรับเปลี่ยนและการดำเนินการค้นหาอย่างรวดเร็ว สำหรับข้อมูลโดยละเอียดเกี่ยวกับ Spring LDAP โปรดดูเอกสารอย่างเป็นทางการที่แปล
วัตถุประสงค์ของบทความนี้: ใช้ Spring Boot เพื่อสร้างโครงการเพื่อช่วยให้ผู้อ่านกำหนดค่าและใช้งาน LDAP อย่างรวดเร็วโดยใช้ Spring LDAP ขั้นตอนทั่วไปมีดังนี้:
1. สร้างโครงการสปริงบูต (ประมาณ 1 นาที)
2. เพิ่มการพึ่งพาสปริง LDAP ในไฟล์ pom.xml (ประมาณ 1 นาที)
3. กำหนดค่าข้อมูลการเชื่อมต่อสปริง LDAP (ประมาณ 1 นาที)
4. สร้างคลาสเอนทิตีเป็นแผนที่รายการใน LDAP (ฟังก์ชั่นการแมป ODM คล้ายกับ ORM)
5. วิธีการเขียนเลเยอร์บริการโดยใช้ LDAPTEMPLATE (ประมาณ 3 นาที)
6. เขียนเลเยอร์คอนโทรลเลอร์ (ประมาณ 3 นาที)
1. สร้างโครงการสปริงบูต (ประมาณ 1 นาที)
คลิกไฟล์ - ใหม่ - โครงการในแนวคิด
รูปที่ 1
ดังที่แสดงในรูปด้านบนให้เลือก Spring Initializr ทางด้านซ้ายเพื่อช่วยเริ่มต้นโครงการสปริง หลังจากกำหนดค่า SDK ให้คลิกถัดไป
รูปที่ 2
หลังจากคลิกดังที่แสดงในรูปที่ 2 หากคุณเพิ่งสาธิตหน้าสามารถทำได้โดยค่าเริ่มต้นคลิกถัดไป
รูปที่ 3
ดังที่แสดงในรูปที่ 3 เราเลือกเว็บและส่วนประกอบที่เกี่ยวข้องกับเว็บจะแสดงทางด้านขวา เราเลือกเว็บทางด้านขวาและทำเครื่องหมายในกล่องด้านหน้า ซึ่งหมายความว่าการพึ่งพาที่เกี่ยวข้องกับเว็บจะได้รับการแนะนำในโครงการสปริงบูตที่สร้างขึ้น คลิกถัดไป
รูปที่ 4
ดังที่แสดงในรูปที่ 4 เพียงแค่ตั้งชื่อด้วยตัวเองที่นี่คลิกเสร็จสิ้น
2. เพิ่มการพึ่งพาสปริง LDAP ในไฟล์ pom.xml (ประมาณ 1 นาที)
รูปที่ 5
ดังที่แสดงในรูปที่ 5 ด้านบนดับเบิลคลิก pom.xml ในโครงการเพื่อเพิ่มการพึ่งพา
รูปที่ 6
ดังที่แสดงในรูปที่ 6 ไฟล์ได้รับการโหลดด้วยการพึ่งพาสปริง-สตาร์สตาร์-สตาร์เทอร์ หากเราต้องการใช้ Spring LDAP เพื่อใช้งานเซิร์ฟเวอร์ LDAP เราจำเป็นต้องเพิ่ม Spring-Boot-Starter-Data-LDAP การพึ่งพานี้จะโหลดการพึ่งพา Spring-Ldap-Core และ Spring-Data-LDAP โดยอัตโนมัติ ในหมู่พวกเขา Spring-Ldap-Core เป็นการพึ่งพาหลักของการดำเนินการ LDAP ในขณะที่ Spring-Data-LDAP ให้ฟังก์ชั่น ODM เพื่อทำให้การดำเนินงานง่ายขึ้น เราสามารถเห็นการพึ่งพาทั้งสองนี้ในห้องสมุดภายนอกของโครงการดังแสดงในรูปที่ 7 ต่อไปนี้:
รูปที่ 7
3. กำหนดค่าข้อมูลการเชื่อมต่อสปริง LDAP
รูปที่ 8
ดังที่แสดงในรูปที่ 8 ด้านบนการกำหนดค่าจะขึ้นอยู่กับคำแนะนำในการกำหนดค่า LDAP บนเว็บไซต์สปริงบูตอย่างเป็นทางการคุณสามารถดูได้ที่นี่ หลังจากการกำหนดค่านี้สปริงบูตจะอ่านการกำหนดค่าโดยอัตโนมัติ
4. สร้างคลาสเอนทิตีเป็นแผนที่รายการใน LDAP
ในตัวอย่างนี้ฟังก์ชั่น ODM ใช้เพื่อทำให้การทำงานของ LDAP ง่ายขึ้นอย่างมาก สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ODM คุณสามารถอ้างถึงเอกสารอย่างเป็นทางการที่แปลได้
เราสร้างโครงสร้างต่อไปนี้ในโครงการ:
รูปที่ 9
ตอนนี้เราเขียนคลาสเอนทิตีที่แมปซึ่งกันและกันด้วยแพ็คเกจรายการ ในหมู่พวกเขาโครงสร้าง LDAP ของฉันมีดังนี้
รูปที่ 10
สร้างคลาสบุคคลใหม่
แพ็คเกจ com.example.demo.entry; นำเข้า com.fasterxml.jackson.annotation.jsonignore; นำเข้า org.springframework.ldap.odm.annotations.attribute; นำเข้า org.springframework.ldap.odm.annotations.entry; org.springframework.ldap.support.ldapnamebuilder; นำเข้า Javax.naming.name;/** * @author: geng_pool * @description: * @date: สร้างขึ้นในปี 2017/12/27 10:24 "o = myorg") บุคคลในชั้นเรียนสาธารณะ {@id @jsonignore ชื่อส่วนตัว dn; @attribute (name = "cn") สตริงส่วนตัว CN; @attribute (name = "sn") สตริงส่วนตัว sn; @attribute (name = "userPassword") สตริงส่วนตัว UserPassword; บุคคลสาธารณะ (สตริง cn) {ชื่อ dn = ldapnamebuilder.newinstance () .add ("o", "myorg") .add ("cn", cn) .build (); this.dn = dn; } บุคคลสาธารณะ () {} / * getter * / ชื่อสาธารณะ getdn () {return dn; } สตริงสาธารณะ getcn () {return cn; } สตริงสาธารณะ getSn () {return sn; } สตริงสาธารณะ getUserPassword () {return userPassword; } / * setter * / โมฆะสาธารณะ setdn (ชื่อ dn) {this.dn = dn; } โมฆะสาธารณะ setcn (สตริง cn) {this.cn = cn; if (this.dn == null) {ชื่อ dn = ldapnameBuilder.newInstance () .add ("o", "myorg") .add ("cn", cn) .build (); this.dn = dn; }} โมฆะสาธารณะ setsn (สตริง sn) {this.sn = sn; } โมฆะสาธารณะ setUserPassword (String userPassword) {this.userPassword = userPassword; } @Override สตริงสาธารณะ toString () {return "person {" + "dn =" + dn.toString () + ", cn = '" + cn +'/' + ", sn ='" sn + '/' ' + ", userpassword ='" -โปรดทราบว่าจำเป็นต้องมี @entry และ @id @jsonignore จะไม่รายงานข้อผิดพลาดเมื่อส่งผ่านบุคคลไปยังส่วนหน้าเนื่องจากประเภทชื่อไม่สามารถแยกวิเคราะห์ได้โดยอัตโนมัติในรูปแบบ JSON โปรดทราบว่าเพื่อความสะดวกฉันเขียนวิธีการสร้างค่า DN ในบุคคลสาธารณะ (String CN) {} ตัวสร้างและยังเขียนวิธีการใน setcn แน่นอนว่ามีปัญหาเรื่องการทำซ้ำของรหัสเพียงเพิกเฉย
5. วิธีการเขียนเลเยอร์บริการโดยใช้ ldaptemplate
ในแพ็คเกจบริการสร้างคลาส OdmpersonRepo ใหม่
แพ็คเกจ com.example.demo.service; นำเข้า com.example.demo.entry.person; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.ldap.core.ldaptemplate; org.springframework.ldap.query.ldapQueryBuilder.query;/** * @author: geng_pool * @description: * @date: สร้างขึ้นในปี 2017/12/27 10:37 * @modified โดย: */ @servicepublic class บุคคลสาธารณะสร้าง (บุคคลบุคคล) {ldaptemplate.create (บุคคล); คนกลับ; } บุคคลสาธารณะ findBycn (สตริง cn) {return ldaptemplate.findone (Query (). โดยที่ ("cn") คือ (cn), person.class); } บุคคลสาธารณะ modifyperson (บุคคลบุคคล) {ldaptemplate.update (บุคคล); คนกลับ; } โมฆะสาธารณะ deleteperson (บุคคลบุคคล) {ldaptemplate.delete (บุคคล); -อย่างที่คุณเห็นการเพิ่มพื้นฐานการลบการปรับเปลี่ยนและการดำเนินการค้นหาได้ถูกนำไปใช้สำหรับเรา เราแค่ต้องเรียกวิธีการใน LDAPTEMPLATE ในการดำเนินการเพิ่มเติมของ LDAP ลบการดัดแปลงและค้นหาได้อย่างอิสระมากขึ้นคุณสามารถอ้างถึงเอกสารอย่างเป็นทางการที่แปลได้
6. เขียนเลเยอร์คอนโทรลเลอร์
ภายใต้แพ็คเกจคอนโทรลเลอร์สร้างคลาส TestController ใหม่เพื่อทดสอบการทำงานของ LDAP
แพ็คเกจ com.example.demo.controller; นำเข้า com.example.demo.entry.person; นำเข้า com.example.demo.service.odmpersonrepo; นำเข้า org.springframework.beans.factory.annotation.autowired; org.springframework.web.bind.annotation. *;/** * @author: geng_pool * @description: * @date: สร้างขึ้นใน 2017/12/27 10:50 * @modified โดย: */ @restcontrollerpublic @requestMapping (value = "/findone", method = requestMethod.post) บุคคลสาธารณะ findBycn (@requestparam (name = "cn", จำเป็น = tring) สตริง cn) {return odmpersonrepo.findbycn (cn); } @PostMapping (value = "/create") บุคคลสาธารณะสร้าง (@RequestParam (name = "cn") สตริง cn,@requestparam (name = "sn") สตริง sn,@requestparam (name = "userpassword") userpassworld) {person person = new person (); person.setcn (CN); person.setsn (SN); person.setUserPassword (userPassworld); ส่งคืน odmpersonrepo.create (บุคคล); } @PostMapping (value = "/update") การอัปเดตบุคคลสาธารณะ (@RequestParam (name = "cn") สตริง cn,@requestparam (name = "sn") สตริง sn,@requestparam (name = "userpassword") userpassworld) {person person = new person (); person.setcn (CN); person.setsn (SN); person.setUserPassword (userPassworld); ส่งคืน odmpersonrepo.modifyperson (บุคคล); } @PostMapping (value = "/ลบ") โมฆะสาธารณะลบ (@requestparam (name = "cn") สตริง cn) {person person = person ใหม่ (); person.setcn (CN); Odmpersonrepo.deleteperson (บุคคล); -ณ จุดนี้การสาธิตขั้นพื้นฐานเสร็จสมบูรณ์แล้ว ลองทดสอบด้านล่าง
ทดสอบ
เพื่อให้ทุกคนทำตามขั้นตอนฉันจะไม่ใช้บุรุษไปรษณีย์เพื่อทดสอบ แต่ทดสอบอินเทอร์เฟซในเบราว์เซอร์ -
เริ่มต้นสปริงบูต หากไม่มีข้อผิดพลาดให้เปิดเบราว์เซอร์ไปยัง localhost:8080/ , กด F12 และปรากฏโหมดนักพัฒนา ค้นหาคอนโซลคอนโซลเพื่ออำนวยความสะดวกให้เราส่งคำสั่งทดสอบ
ก่อนอื่นแนะนำ jQuery.js เปิด jQuery.js เลือกทั้งหมด - คัดลอก - วางในคอนโซล - ป้อนดังแสดงในรูปด้านล่าง:
รูปที่ 11
แสดงให้เห็นว่าเป็นความจริงซึ่งหมายความว่าการโหลดจะสำเร็จ เราสามารถใช้ Ajax ของ JQuery เพื่อทดสอบได้
เพิ่มข้อมูล
รูปที่ 12
ตามที่ต้องการโดย TestController ของเลเยอร์คอนโทรลเลอร์เราใช้วิธีการโพสต์บนที่อยู่/สร้างเพื่อส่งผ่าน UserPassword Data CN SN
รูปที่ 13
ในเซิร์ฟเวอร์ LDAP ข้อมูลเพิ่มเติมจะปรากฏขึ้นด้วย
รูปที่ 14
ค้นหาข้อมูล
รูปที่ 15
ข้อมูลสามารถพบได้อย่างถูกต้องตาม CN
แก้ไขข้อมูล
รูปที่ 16
มาตรวจสอบว่า LDAP ได้รับการแก้ไขหรือไม่
รูปที่ 17
คุณจะเห็นว่าข้อมูลสามารถแก้ไขได้ตามปกติ
ลบข้อมูล
รูปที่ 18
ตรวจสอบว่าจะลบใน LDAP หรือไม่
รูปที่ 19
อย่างที่คุณเห็นข้อมูลถูกลบอย่างถูกต้อง
คำแนะนำอื่น ๆ
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น