之前学习过spring-ldap的官方文档:2017.4.10 spring-ldap官方文档学习

现在是对实际使用的spring-ldap及使用过程中遇到的问题,进行总结。

1.spring-ldap的pom依赖

         <!-- 添加Spring-ldap-->
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>

下面的网址是spring的ldap页,里面有一个quick start。其中显示了spring-ldap最近的版本,并且勾选不同的版本,会自动生成依赖。

http://projects.spring.io/spring-ldap/

2.ldapTemplate的生成--方式1自动注入

2.1 spring-ldap声明

 <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ldap="http://www.springframework.org/schema/ldap"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/ldap http://www.springframework.org/schema/ldap/spring-ldap.xsd">

2.2 ldapTemplate bean

 <context:property-placeholder location="classpath:/ldap.properties" />
<ldap:context-source id="contextSource"
password="${sample.ldap.password}"
url="${sample.ldap.url}"
username="${sample.ldap.userDn}"
base="${sample.ldap.base}" />
<ldap:ldap-template id="ldapTemplate" context-source-ref="contextSource"/>

或者

 <bean id="contextSource"
class="org.springframework.ldap.core.support.LdapContextSource">
<property name="url" value="${sample.ldap.url}" />
<property name="base" value="${sample.ldap.base}" />
<property name="userDn" value="${sample.ldap.userDn}" />
<property name="password" value="${sample.ldap.password}" />
</bean> <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
<constructor-arg ref="contextSource" />
</bean>

2.3 使用

 @Autowired
private LdapTemplate ldapTemplate;

3.ldapTemplate的生成--方式2代码生成

 public LdapTemplate getLdapTemplate(){
LdapTemplate template = null;
try {
LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl(getSync_ldap_url());
contextSource.setBase(getSync_ldap_base());
contextSource.setUserDn(getSync_ldap_userDn());
contextSource.setPassword(getSync_ldap_password());
contextSource.setPooled(false);
contextSource.afterPropertiesSet(); // important
template = new LdapTemplate(contextSource);
}catch (Exception e){
e.printStackTrace();
}
return template;
}

4.spring-ldap的使用

api的使用在上次的文档中已经学习过了:2017.4.10 spring-ldap官方文档学习

一些简单示例:

/**
* 动态创建dn
* @param user
* @return
*/
private Name buildDn(User user) {
return LdapNameBuilder.newInstance()
.add("ou", "Users")
.add("uid",user.getFdUserid().toString())
.build();
} /**
* 在ldap里更新用户
* @param user
*/
private void updateUser(User user) {
Name dn = buildDn(user);
getLdapTemplate().rebind(dn, null, buildAttributes(user));
} /**
* 在ldap里删除用户
* @param user
*/
private void deleteUser(User user) {
Name dn = buildDn(user);
getLdapTemplate().unbind(dn);
} /**
* 在ldap里创建用户
* @param user
*/
private void createUser(User user) {
Name dn = buildDn(user);
getLdapTemplate().bind(dn, null, buildAttributes(user));
} /**
* 动态构建属性
* @param user
* @return
*/
private Attributes buildAttributes(User user) { Attributes attrs = new BasicAttributes();
try {
BasicAttribute objectclass = new BasicAttribute("objectclass");
objectclass.add("top");
objectclass.add("posixAccount");
objectclass.add("inetOrgPerson");
attrs.put(objectclass); attrs.put("userPassword", user.getFdLdapPassword() == null ? "" : user.getFdLdapPassword());
attrs.put("cn", user.getFdUsername() + "@" + user.getFdTenantName());
attrs.put("sn", user.getFdUsername() + "@" + user.getFdTenantName());
attrs.put("displayName", user.getFdDisplayName()== null? "":user.getFdDisplayName());
attrs.put("homeDirectory", "/root");
attrs.put("uidNumber", "0");
attrs.put("uid", user.getFdUserid().toString());
attrs.put("gidNumber", "0");
}catch (Exception e){
e.printStackTrace();
}
return attrs;
}

2017.6.8 spring-ldap基本使用总结的更多相关文章

  1. Spring LDAP

    LDAP Spring LDAP 使用 - Sayi像秋天一样优雅 - 开源中国社区 http://docs.spring.io/spring-ldap/docs/current/reference/ ...

  2. Spring LDAP的使用

    LDAP入门http://www.jianshu.com/p/7e4d99f6baaf Spring LDAP,是Spring的一个组件,实现对LDAP的操作. 在编程操作MySQL时,我们除了用JD ...

  3. 2017技术核心——Spring

    从毕业从事Java WEB开始到现在已差不多快5年时间了,一直使用的Spring相关的技术,其实最主要的是SpringMVC这一块.其实,一直停留在用的地步,并不知晓其原理,真正耐下心来去研究Spri ...

  4. Spring Ldap 的增删改查

    package ldap.entity; /** * 本测试类person对象来自schema文件的core.schema文件 * objectClass为person,必填属性和可选属性也是根据该对 ...

  5. 2017.3.31 spring mvc教程(八) <mvc:annotation-driven />所做的工作

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  6. 2017.3.31 spring mvc教程(七)多视图控制器

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  7. 2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  8. 2017.3.31 spring mvc教程(五)Action的单元测试

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  9. 2017.3.31 spring mvc教程(四)全局的异常处理

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  10. 2017.3.31 spring mvc教程(三)拦截器

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

随机推荐

  1. eclipse安装使用jetty

    安装: 直接从eclipse中的eclipse_market中下载即可,关键说下配置项目的访问路径:

  2. cpj-swagger分别整合struts2、spring mvc、servlet

    cpj-swagger 原文地址:https://github.com/3cpj/swagger 1. Swagger是什么? 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可 ...

  3. Dinic算法学习&&HDU2063

    http://www.cnblogs.com/SYCstudio/p/7260613.html 看这篇博文懂了一点,做题再体会体会吧 找了好久都没找到一个好用的模板…… 我也是佛了..最后决定用峰神的 ...

  4. js j将数字每三位用逗号隔开的方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 插件 原生js 省市区 三级联动 源码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 编程中的runtime_error问题

    前几天在编程中,代码如下: 头文件:ErrorHandlingModule.h //filename:ErrorHandlingModule.h #ifndef ErrorHandlingModule ...

  7. xen save/restore 过程

    以下分析基于 xen4.2.3, 虚拟机都是hvm模式 使用libxl库有两种方式启动一个虚拟机,一种是 xl create xx.conf , 这种方式从一个配置文件开始启动一个虚拟机,速度相对较慢 ...

  8. 初学springMVC的拦截器

    springMvc拦截器的执行顺序! 拦截器的各个方法的作用: /** * 登录验证拦截器 */      public class Intercepter implements HandlerInt ...

  9. Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: /tmp/hsperfdata_hadoop/44512

    早上登录hbase shell,出现异常: [hadoop@node002 ~]$ hbase shell Java HotSpot(TM) 64-Bit Server VM warning: Ins ...

  10. python爬虫搜片利器fmovice【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python/ 前言 讲真!小编不管看什么电影(大的.小的),不管什么电视剧,小编都没买 ...