spring-ldap基本使用总结

来源:互联网 发布:ug编程是什么 编辑:程序博客网 时间:2024/05/17 04:35

 

正文

之前学习过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;    }
复制代码
原创粉丝点击