前一陣學習了ldap,用java小試了一下,只實現java對ldap的查找、登陸功能,傳上來供初級學者參考:
UserDaoLdap:
import java.util.List;
import ldap.pojo.LdapPersonInfo;
/**
* access Ldap
*
* @author 張亮
*/
public interface UserDaoLdap {
/**
* 獲得所有的用戶名(ldap稱cn),可根據第二個參數指定返回值是否重複
*
* @param scope
* 取值爲0、1、2,分別對應 SearchControls 類 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三個查詢範圍,分別代表 當前對象查詢、當前節點下對象查詢、當前節點所有子目錄查詢
*
* @param distinct
* true,去掉結構中的重複值;false 允許結果中包含重複值
* @return 查詢範圍下返回的cn列表
*/
public List getAllPersonNames(int scope, boolean distinct);
/**
* 查詢指定範圍下的所有用戶信息
*
* @param scope
* 取值爲0、1、2,分別對應 SearchControls 類 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三個查詢範圍,分別代表 當前對象查詢、當前節點下對象查詢、當前節點所有子目錄查詢
*
* @return 查詢範圍下返回的所有用戶信息列表
*/
public List getAllPersons(int scope);
/**
* 根據Uid查詢用戶信息,*代表任意長度的任意字符
*
* @param uid
* 用戶的uid
* @param scope
* 取值爲0、1、2,分別對應 SearchControls 類 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三個查詢範圍,分別代表 當前對象查詢、當前節點下對象查詢、當前節點所有子目錄查詢
*
* @return 用戶信息
*/
public List getPersonByUid(String uid, int scope);
/**
* 查詢包含當前Cn信息的所有用戶,*代表任意長度的任意字符
*
* @param cn
* 用戶的cn
* @param scope
* 取值爲0、1、2,分別對應 SearchControls 類 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三個查詢範圍,分別代表 當前對象查詢、當前節點下對象查詢、當前節點所有子目錄查詢
*
* @return 用戶列表
*/
public List getPersonByCn(String cn, int scope);
/**
* 使用LdapPersonInfo類對象實現複合查詢,屬性中可使用通配符*,*代表任意長度的任意字符
*
* @param ldapPersonInfo
* 查詢條件
* @param scope
* 取值爲0、1、2,分別對應 SearchControls 類 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三個查詢範圍,分別代表 當前對象查詢、當前節點下對象查詢、當前節點所有子目錄查詢
*
* @return 用戶列表
*/
public List getPersonByPersonEnty(
LdapPersonInfo ldapPersonInfo, int scope);
/**
* 根據dn查找用戶,dn爲base dn 的相對dn.(若basedn爲:dc=koal,dc=com,user
* dn爲:uid=123,dc=koal,dc=com,則此處只需要提供 123 作爲參數)
*
* @param dn
* 相對base dn的dn參數
* @return 用戶信息
*/
public LdapPersonInfo getLdapObjectByDn(String dn);
/**
* 驗證用戶登陸
*
* @param uid
* 用戶uid
* @param password
* 用戶密碼
*
* @return 是否登陸成功
*/
public boolean userLogin(String uid, String password);
/**
* 查詢用戶user dn
*
* @param uid
* 用戶uid
*
* @return 用戶dn列表,當前目錄節點下可能存在多個相同uid的多個user dn
*/
public List getUserDnByUid(String uid);
}