package ldap.pojo;

import java.util.List;

/**
 * @author 张亮 
 * ldap用户属性信息数据类
 */
public class LdapPersonInfo {

    // ldap中用户的uid属性
    private String uid;

    // ldap中用户的givenName属性
    private String firstName;

    // ldap中用户的sn属性

    private String lastName;

    // ldap中用户的cn属性

    private List cn;

    // ldap中用户的telephonenumber属性
    private String telephone;

    // ldap中用户的facsimiletelephonenumber属性
    private String fax;

    // ldap中用户的mail属性
    private String mail;

    public LdapPersonInfo() {

    }

    public LdapPersonInfo(String uid, String firstName, String lastName,
            List cn, String telephone, String fax, String mail) {
        this.uid = uid;
        this.firstName = firstName;
        this.lastName = lastName;
        this.cn = cn;
        this.telephone = telephone;
        this.fax = fax;
        this.mail = mail;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public List getCn() {
        return cn;
    }

    public void setCn(List cn) {
        this.cn = cn;
    }
}

UserDaoLdapImpl for jdk1.42

; i < dnlist.size(); i++) {
            if (loginCheack(dnlist.get(i).toString(), password) == true) {
                return true;
            }
        }
        return false;
    }

    /**
     * 查询用户user dn
     * 
     * @param uid
     *            用户uid
     * 
     * @return 用户dn列表,当前目录节点下可能存在多个相同uid的多个user dn
     */
    public List getUserDnByUid(String uid) {
        // 获取DirContext对象
        DirContext ctx = ldapTemplate.getContextSource().getReadOnlyContext();
        // 存储用户dn
        ArrayList dn = new ArrayList();
        try {
            SearchControls constraints = new SearchControls();
            constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
            NamingEnumeration en = ctx.search("", "uid=" + uid, constraints);
            // 查询所有用户

            while (en != null && en.hasMoreElements()) {
                Object obj = en.nextElement();
                if (obj instanceof SearchResult) {
                    SearchResult si = (SearchResult) obj;
                    // 获取dn并添加到查询列表
                    si.getName();
                    Hashtable ht = new Hashtable();
                    // 获取已有的登陆信息
                    ht = (Hashtable) ctx.getEnvironment();
                    // 设置用户
                    String str = ht.get(this.BASEDN_KEY).toString();
                    dn.add(si.getName()+","+str);
                }
            }
            ctx.close();
        } catch (Exception e) {
            e.printStackTrace();
            try {
                ctx.close();
            } catch (Exception ee) {
                ee.printStackTrace();
            }
        }
        return dn;
    }

    /**
     * ldap用户信息数据填充类 将获取的属性信息封装为LdapObject对象
     * 
     */
    private class LdapObjectAttributesMapper implements AttributesMapper {
        public Object mapFromAttributes(Attributes attrs)
                throws NamingException {
            LdapPersonInfo LdapObject = new LdapPersonInfo();
            try {
                // 获取并封装uid属性

                LdapObject.setUid((String) getAttribute(attrs, "uid"));
                // 获取并封装givenname属性

                LdapObject.setFirstName((String) getAttribute(attrs,
                        "givenname"));
                // 获取并封装sn属性

                LdapObject.setLastName((String) getAttribute(attrs, "sn"));
                // 获取并封装cn属性

                LdapObject.setCn(getMoreSameAttributes(attrs, "cn"));
                // 获取并封装telephonenumber属性

                LdapObject.setTelephone((String) getAttribute(attrs,
                        "telephonenumber"));
                // 获取并封装facsimiletelephonenumber属性

                LdapObject.setFax((String) getAttribute(attrs,
                        "facsimiletelephonenumber"));
                // 获取并封装mail属性

                LdapObject.setMail((String) getAttribute(attrs, "mail"));
            } catch (NamingException n) {
                n.printStackTrace();
            }
            // 返回封装后的用户对象
            return LdapObject;
        }

        /**
         * 从属性列表中获取指定的属性
         * 
         * 
         * @param attrs
         *            属性列表
         * 
         * @param attrName
         *            需要获取的属性
         * 
         * @return 返回获取的属性值
         * 
         * @throws NamingException
         */
        private String getAttribute(Attributes attrs, String attrName)
                throws NamingException {
            Attribute attr = attrs.get(attrName);
            // 若没有指定的属性返回空字符串

            if (attr == null) {
                return "";
            } else {
                return (String) attr.get();
            }
        }

        /**
         * 从属性列表中获取指定的属性的所有属性值
         * 
         * 
         * @param attrs
         *            属性列表
         * 
         * @param attrName
         *            需要获取的属性
         * 
         * @return 返回获取的属性值
         * 
         * @throws NamingException
         */
        private List getMoreSameAttributes(Attributes attrs, String attrName)
                throws NamingException {

            Attribute attr = attrs.get(attrName);
            List elelist = new ArrayList();
            // 若没有指定的属性返回null
            if (attr == null) {
                return null;
            } else {
                // 获取当前属性的所有值,添加到返回列表中
                Enumeration ent = attr.getAll();
                while (ent.hasMoreElements())
                    elelist.add(ent.nextElement().toString());
                return elelist;
            }
        }
    }

    private void dispPerson(LdapPersonInfo temp) {
        System.out.println("-----------------------------");
        System.out.println("User(uid: " + temp.getUid() + ") listing...");
        System.out.println("First Name: " + temp.getFirstName());
        System.out.println("Last Name: " + temp.getLastName());
        System.out.println("Common Name: " + temp.getCn());
        System.out.println("User ID: " + temp.getUid());
        System.out.println("E-Mail: " + temp.getMail());
        System.out.println("Phone: " + temp.getTelephone());
        System.out.println("Fax: " + temp.getFax());
        System.out.println("List completed.");
        System.out.println("-----------------------------n");
    }


}

java对Ldap操作2的更多相关文章

  1. JAVA使用Ldap操作AD域

    项目上遇到的需要在集成 操作域用户的信息的功能,第一次接触ad域,因为不了解而且网上其他介绍不明确,比较费时,这里记录下. 说明: (1). 特别注意:Java操作查询域用户信息获取到的数据和域管理员 ...

  2. java对Ldap操作1

    package ldap;import java.util.List;import ldap.pojo.LdapPersonInfo;/** * access Ldap *  * @author 张亮 ...

  3. java对Ldap操作4

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE  ...

  4. Java下LDAP操作的资料

    话说LDAP真是个诡异的protocol(或者数据库,或者服务,whatever...),没有一个特别形象的spec.这里列出一些筛选出的还可以的文档,都是oracle的: https://docs. ...

  5. java对Ldap操作3

    "));    }}

  6. OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证

    导读 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的数据库系统,其专门针对读取,浏览 ...

  7. 利用LDAP操作AD域

    LDAP操作代码样例  初始化LDAP 目录服务上下文 该例子中,我们使用uid=linly,ou=People,dc=jsoso,dc=net这个账号,链接位于本机8389端口的LDAP服务器(ld ...

  8. Java Spring mvc 操作 Redis 及 Redis 集群

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...

  9. Java的JDBC操作

    Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...

随机推荐

  1. 6 关于 Oracle NULL栏位和PL./SQL执行实验

    今日有针对NULL值有了相关实验. 对NULL 值插入的讨论. 1, PL/SQL 中可以执行插入''或者NULL 的操作, 前提是栏位允许为空. 2, 可以对NULL进行一系列数据库运算. 如:   ...

  2. cocos2d-x 2.2.0 如何在lua中注册回调函数给C++

    cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件.翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做.值得吐 ...

  3. 关于Java中的数组转变成字符串问题

    1.用StringBuilder private static String arraytoString(int arr[]){ StringBuilder sb=new StringBuilder( ...

  4. 嵌入式web server——Goahead移植要点

    前言 在嵌入式设备中,在没有液晶显示的情况下,可以使用web来访问设备,查看设备的运行状态以及进行参数设置,类似于路由器设置.网上有很多关于各种web server的优劣的评论,在此不讨论,只是介绍其 ...

  5. SVM(支持向量机)算法

    第一步.初步了解SVM 1.0.什么是支持向量机SVM 要明白什么是SVM,便得从分类说起. 分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函数或分类模型(或者叫做分类器),而支持向 ...

  6. jQuery源码整体结构(源码2.0.3)

    拨开jQuery的面纱,最近了解了下jQuery源码整体框架.主要包括: (1)  jQuery 核心模块 (2)  sizzle 选择器引擎 (3)  Deferred 异步队列 (4)  Supp ...

  7. TCP/IP笔记 应用层(2)——FTP

    1. FTP(File Transfer Protocol) 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务.FTP 的主要功能是减少或消除在不同操作系统下处理文 ...

  8. Android 进程和文件的UID/GID

    一.文件的操作权限和UID,GID以及进程的UID,GID 1. 文件资源的权限力度:UID/GID 2. 文件的可操作权限 3. 进程的标识: PID, UID, GID, GIDs 二.UID,G ...

  9. oracle dataguard

    startup mount restrict; drop database; alter database add standby logfile thread 1 group 8 '/oracle/ ...

  10. 我的前端之旅--SeaJs基础和spm编译工具运用[图文]

    标签:seajs   nodejs   npm   spm   js 1. 概述 本文章来源于本人在项目的实际应用中写下的记录.因初期在安装和使用Seajs和SPM的时候,有点不知所措的经历.为此,我 ...