之前学习过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. sql或oracle插入数据时进行md5加密

    1.sql简单直接调用: SELECT hashbytes(') ; 2.oracle要复杂些 首写需要建函数: CREATE OR REPLACE FUNCTION MD5( passwd IN V ...

  2. CSU 2136 ——湖南多校对抗赛 I

    2136: 统帅三军! Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 55     ...

  3. MFC 屏幕截图(libjpeg bmp转jpg)

    项目中需要用到的功能. void Screenshot() { CDC *pDC; pDC = CDC::FromHandle(GetDC(GetDesktopWindow())); if(pDC = ...

  4. 7月14号day6总结

    今天学习过程和总结 IOC和DIO IOC相当于一个容器,在容器中加注解.接口存在意义依赖注入.4个注解都行,依赖注入只能发生在IOC容器里, pring IOC 容器可以管理Bean 的生命周期,S ...

  5. MFC 按钮

    ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上 ((CButton *)GetDlgItem(IDC_RADIO1))-> ...

  6. 狂K 线段树

    想写好树剖~~线段树very important HDU 1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536 ...

  7. 转一下网上找来的tortoise git不用每次都输入邮箱和密码的方法。备查看

    每次git clone 和push 都要输入用户名和密码.虽然安全,但在本机上每次都输有些麻烦,如何记住用户名和密码呢? 当你配置好git后,在C:\Documents and Settings\Ad ...

  8. 培训补坑(day2:割点与桥+强联通分量)

    补坑ing... 好吧,这是第二天. 这一天我们主要围绕的就是一个人:tarjan......创造的强联通分量算法 对于这一天的内容我不按照顺序来讲,我们先讲一讲强联通分量,然后再讲割点与桥会便于理解 ...

  9. YYH的积木(NOIP模拟赛Round 6)

    题目描述 YYH手上有n盒积木,每个积木有个重量.现在他想从每盒积木中拿一块积木,放在一起,这一堆积木的重量为每块积木的重量和.现在他想知道重量最少的k种取法的重量分别是多少. 输入输出格式 输入格式 ...

  10. Linux进程管理与调度-之-目录导航【转】

    转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:// ...