Este artículo es un artículo sobre operaciones relacionadas con la conexión LDAP en la serie Spring Boot. Solo implica el uso básico de ODM para implementar rápidamente la adición, eliminación, modificación y operaciones de búsqueda LDAP. Para obtener información detallada sobre Spring LDAP, consulte la documentación oficial traducida.
El propósito de este artículo: Use el arranque de Spring para crear proyectos para ayudar a los lectores a configurar y operar rápidamente LDAP usando Spring LDAP. Los pasos generales son los siguientes:
1. Cree el proyecto de arranque de primavera (aproximadamente 1 minuto)
2. Agregue la dependencia de Spring LDAP en el archivo pom.xml (aproximadamente 1 minuto)
3. Configure la información de conexión LDAP Spring (aproximadamente 1 minuto)
4. Cree clases de entidad como mapa de entrada en LDAP (función de mapeo ODM, similar a ORM)
5. Método de capa de redacción de la capa de servicio utilizando LDAPTemplate (aproximadamente 3 minutos)
6. Escriba la capa del controlador (aproximadamente 3 minutos)
1. Cree el proyecto de arranque de primavera (aproximadamente 1 minuto)
Haga clic en Archivo - Nuevo - Proyecto en Idea
Figura 1
Como se muestra en la figura anterior, seleccione Spring Initializr a la izquierda para ayudar a inicializar el proyecto Spring. Después de configurar el SDK, haga clic en Siguiente.
Figura 2
Después de hacer clic, como se muestra en la Figura 2, si solo hace una demostración, la página se puede hacer de forma predeterminada, haga clic en Siguiente.
Figura 3
Como se muestra en la Figura 3, seleccionamos la web, y los componentes relacionados con la web se mostrarán en el lado derecho. Seleccionamos la web a la derecha y marcaremos la casilla frente a ella. Esto significa que las dependencias relacionadas con la web se introducirán en el proyecto de arranque de primavera creado. Haga clic en Siguiente.
Figura 4
Como se muestra en la Figura 4, solo asígnelo aquí, haga clic en Finalizar.
2. Agregue la dependencia de Spring LDAP en el archivo pom.xml (aproximadamente 1 minuto)
Figura 5
Como se muestra en la Figura 5 anterior, haga doble clic en pom.xml en el proyecto para agregar dependencias.
Figura 6
Como se muestra en la Figura 6, el archivo se ha cargado con dependencias de Spring-Boot-Starter-Web. Si queremos usar Spring LDAP para operar el servidor LDAP, necesitamos agregar Data-LDAP de Spring-Boot-Starter. Esta dependencia cargará automáticamente las dependencias Spring-LDAP-Core y Spring-Data-LDAP. Entre ellos, Spring-LDAP-Core es la dependencia central de las operaciones LDAP, mientras que Spring-Data-LDAP proporciona funciones ODM para simplificar las operaciones. Podemos ver estas dos dependencias en las bibliotecas externas del proyecto, como se muestra en la siguiente Figura 7:
Figura 7
3. Configurar la información de conexión LDAP Spring
Figura 8
Como se muestra en la Figura 8 anterior, la configuración se basa en las instrucciones en la configuración LDAP en el sitio web oficial de Boot Spring, puede ver aquí. Después de esta configuración, Spring Boot leerá automáticamente la configuración.
4. Crear clase de entidad como mapa de entrada en LDAP
En este ejemplo, la función ODM se utiliza para simplificar en gran medida la operación de LDAP. Para obtener más información sobre ODM, puede consultar los documentos oficiales traducidos.
Creamos la siguiente estructura en el proyecto:
Figura 9
Ahora, escribimos la clase de entidad que se asigna entre sí con el paquete de entrada. Entre ellos, mi estructura LDAP es la siguiente
Figura 10
Crear una nueva clase de persona
paquete com.example.demo.entry; import com.fasterxml.jackson.annotation.jsonignore; import org.springframework.ldap.odm.annotations.attribute; importar org.springframework.ldap.odm.annotations.entry; import og.springframework.dap.odm.annotations.id; import; org.springframework.ldap.support.LdapNameBuilder;import javax.naming.Name;/** * @Author: geng_pool * @Description: * @Date: Created in 2017/12/27 10:24 * @Modified by: */@Entry(objectClasses = {"organizationalPerson","person","top"},base = "O = Myorg") Persona de clase pública {@id @jsonignore nombre privado dn; @Attribute (name = "CN") String privado CN; @Attribute (name = "sn") String privado Sn; @Attribute (name = "UserPassword") privado String UserPassword; Persona pública (String Cn) {name dn = lDapNameBuilder.newinStance () .add ("o", "myorg") .add ("cn", cn) .build (); this.dn = dn; } Public Person () {} / * getter * / public Name getDn () {return dn; } public String getCn () {return cn; } cadena pública getsn () {return sn; } public String getUserPassword () {return userPassword; } / * setter * / public void setdn (nombre dn) {this.dn = dn; } public void setcn (string cn) {this.cn = cn; if (this.dn == null) {nombre dn = ldapnameBuilder.newinstance () .add ("o", "myorg") .add ("cn", cn) .build (); this.dn = dn; }} public void setsn (String sn) {this.sn = sn; } public void setUserPassword (string userPassword) {this.userpassword = userPassword; } @Override public string toString () {return "persona {" + "dn =" + dn.ToString () + ", cn = '" + cn +'/'' + ", sn = '" + sn +'/'' + ", userpassword = '" + userpassword +'/'' + '}'; }}Tenga en cuenta que se requieren @Entry y @ID. @Jsonignore no informa un error al pasar a la persona al frente, porque el tipo de nombre no se puede analizar automáticamente en formato JSON. Tenga en cuenta que, por conveniencia, escribí el método de generación de valor DN en la persona pública (String CN) {} Constructor, y también escribí el método en SETCN. Por supuesto, hay un problema de duplicación de código, solo ignórelo.
5. Método de capa de redacción de la capa de servicio utilizando LDAPTemplate
En el paquete de servicio, cree una nueva clase ODMPersonRepo
paquete com.example.demo.service; import com.example.demo.entry.person; import org.springframework.beans.factory.annotation.aUtowired; import org.springframework.ldap.core.ldaptemplate; import og.springframework.sterotype.service; import static static org.springframework.ldap.query.ldapQueryBuilder.query;/** * @author: geng_pool * @Description: * @date: creado en 2017/12/27 10:37 * @modified por: */ @ServicePublic Class OdmpersonRepo {@autowered ldaptemplate ldaptemplate; persona pública crea (persona persona) {ldaptemplate.create (persona); persona de regreso; } Public Person FindBycn (String Cn) {return ldaptemplate.findone (query (). Where ("cn"). is (cn), persona.class); } persona pública modifyperson (persona persona) {ldaptemplate.update (persona); persona de regreso; } public void Deleteperson (persona persona) {ldaptemplate.delete (persona); }}Como puede ver, la adición básica, la eliminación, la modificación y las operaciones de búsqueda se han implementado para nosotros. Solo necesitamos llamar al método en LDAPTemplate. Para operar las adiciones, deleciones, modificaciones y búsquedas de LDAP más libremente, puede consultar los documentos oficiales traducidos.
6. Escribe la capa del controlador
En el paquete controlador, cree una nueva clase TestController para probar el funcionamiento de LDAP.
paquete com.example.demo.controller; import com.example.demo.entry.person; import com.example.demo.service.odmpersonrepo; import org.springframework.beans.factory.annotation.aUtowired; import og.springframework.ldap.ldaptemplate; importación org.springframework.web.bind.annotation. *;/** * @author: geng_pool * @Description: * @Date: creado en 2017/12/27 10:50 * @modified por: */ @RestControllerPublic Class TestController {@aUtowired Private OdmPersonRepo OdmpersonRepo; @RequestMapping (value = "/findone", método = requestmethod.post) persona pública findBycn (@RequestParam (name = "cn", requirir = true) string cn) {return odmpersonRepo.findbycn (cn); } @PostMapping (value = "/create") Public Person create (@RequestParam (name = "cn") String cn,@requestParam (name = "sn") String sn,@requestparam (name = "userpassword") string userPassWorld) {persona persona = nueva persona (); persona.setcn (CN); persona.setsn (sn); Person.setUserPassword (UserPassWorld); return OdmpersonRepo.Create (persona); } @PostMapping (value = "/update") Public Person Update (@RequestParam (name = "cn") String cn,@requestParam (name = "sn") String sn,@requitparam (name = "userpassword") string userPassWorld) {persona persona = nueva persona (); persona.setcn (CN); persona.setsn (sn); Person.setUserPassword (UserPassWorld); return OdmPersonRepo.Modifyperson (persona); } @PostMapping (value = "/delete") public void Delete (@RequestParam (name = "cn") String cn) {persona persona = nueva persona (); persona.setcn (CN); ODMPERSONREPO.DELETEPERSON (persona); }}En este punto, se ha completado una demostración básica. Vamos a probarlo a continuación
prueba
Para que todos sigan los pasos, no usaré Postman para probar, sino probar la interfaz en el navegador. ,
Comienza la bota de primavera. Si no hay error, abra el navegador a localhost:8080/ , presione F12 y explique el modo de desarrollador. Encuentre la consola de la consola para facilitarnos que envíe declaraciones de prueba.
Primero, introduce jQuery.js. Abra jQuery.js, seleccione All - Copiar - Pegue en la consola - Ingrese, como se muestra en la figura a continuación:
Figura 11
Se muestra como verdadero, lo que significa que la carga es exitosa. Podemos usar el AJAX de JQuery para probarlo.
Datos agregados
Figura 12
Como lo requiere el TestController de la capa del controlador, utilizamos el método de publicación en la dirección/creación para pasar los datos CN SN userPassword sobre
Figura 13
En el servidor LDAP, también se muestran los datos agregados
Figura 14
Encontrar datos
Figura 15
Los datos también se pueden encontrar correctamente en base a CN.
Modificar datos
Figura 16
Verifiquemos si el LDAP se modifica
Figura 17
Puede ver que los datos se pueden modificar normalmente
Eliminar datos
Figura 18
Verifique si eliminar en LDAP
Figura 19
Como puede ver, los datos se han eliminado correctamente.
Otras instrucciones
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.