spring mvc+ldap

 前几天遇到一个项目,是关于ldap的。我们的框架使用的是springMVC,于是便找了一下找了一些相关的内容,在项目中融入了ldap;

开发环境:myeclipse8.6+tomcat6.0+jdk1.6+ mysql +OpenLDAP  win7

首先需要一些ldap的jar包spring-ldap-1.3.0.RELEASE-all.jar,至于spring的jar包就不说了。

然后配置application.xml配置文件:

a.首先是数据库配置信息,mysql与ldap:

 <!-- 数据库配置信息 -->
    <bean id="propertyConfigurer"  
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
      <list>  
         <value>classpath:jdbc.properties</value>  
         <value>classpath:ldap.properties</value>  
       </list>  
   </property>  
</bean>  

        b.然后配置ldap服务器信息,同jdbc配置

<!-- ldap服务配置 -->
  <bean id="contextSource"  
        class="org.springframework.ldap.core.support.LdapContextSource">  
        <property name="url" value="${urls}" />  
        <property name="base" value="${basepath}" />  
        <property name="userDn" value="${userDn}" />  
        <property name="password" value="${password}" />  
    </bean>  

<!--ldap模板配置-->

       <bean id="ldapTemplate"  
        class="org.springframework.ldap.core.LdapTemplate">  
        <constructor-arg ref="contextSource" />  
    </bean>  

 

ok,以上就是application.xml中的配置,进行如上配置基本就ok了可以使用了。下面就可是使用啦:

首先要配置ldap.properties文件,一下是我的ldap配置信息

urls=ldap://192.168.1.188:389
userDn=cn=root,dc=ncs,dc=com,dc=cn
password=111111
basepath=dc=ncs,dc=com,dc=cn


Manager层,我把要从ldap取出的信息设置成了对象,这样就比较好操作:

       @Repository
public class LdapUserManager {
private LdapTemplate ldapTemplate;
public void setLdapTemplate(LdapTemplate ldapTemplate) {
this.ldapTemplate = ldapTemplate;
}
 
//获取所有的用户信息,根据filter条件
@SuppressWarnings("unchecked")
public List<LdapUser> getAllUsers() {
EqualsFilter filter = new EqualsFilter("objectclass", "ncsUser");
return ldapTemplate.search(DistinguishedName.EMPTY_PATH, filter.encode(), new AttributesMapper() {
public Object mapFromAttributes(Attributes attrs) throws NamingException {
//取出信息放入到实体类中,返回

LdapUser ldapuser = new LdapUser();
ldapuser.setGivenname(attrs.get("ncsusername").get()+"");
ldapuser.setUserPassword(attrs.get("ncsuserpassword").get()+"");
return ldapuser;
}
});
}
}

 service层就是简单的调用Manager层了:

@Service
  public class LdapUserServiceImpl  extends BaseService{
//
public List<LdapUser> getAllUsers() {
return ldapUserManager.getAllUsers();
}

  }

action层调用,并打印出获取的信息。

@Controller
@RequestMapping("/ldapUser.do") 
public class LdapUserAction {
@Autowired
    public LdapUserServiceImpl ldapUserServiceImpl;   
private Logger log = Logger.getLogger(LdapGroupAction.class);


@RequestMapping(params = "method=getldapuser")
public  ModelAndView  getLdapuser(HttpServletRequest request,HttpServletResponse response) throws IOException{
List<LdapUser> listuser = ldapUserServiceImpl.getAllUsers();
for(int i=0;i<listuser.size();i++){
LdapUser ldapUser = listuser.get(i);
log.debug("Givenname:"+ldapUser.getGivenname());
log.debug("UserPassword:"+ldapUser.getUserPassword());
}
return null; 
}


}



阅读更多
文章标签: ldap+spring ldap
个人分类: spring java ldap
想对作者说点什么? 我来说一句

Spring+LDAP实现单点登录

2011年07月12日 90KB 下载

Spring study code

2009年12月22日 2.34MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭