2013-07-12 62 views
0

,如果您能向我解釋一件下面的代碼,我不太明白,我將感激不盡:與Java LDAP認證,說明需要

是什麼意思(&(cn=*)({0}={1}))在過濾領域?

我知道cn表示搜索cn屬性,然後將結果添加到({0}={1})

什麼是({0}={1})意思?

下面的代碼:

try { 
    // Create initial context 
    ctx = new InitialDirContext(env); 
    Attributes matchAttrs = new BasicAttributes(true); 
    matchAttrs.put(new BasicAttribute(ldap_id_field, netid)); 

    String attlist[] = {ldap_email_field, ldap_givenname_field, 
      ldap_surname_field, ldap_phone_field}; 

    // look up attributes 
     try { 
     SearchControls ctls = new SearchControls(); 
    ctls.setReturningAttributes(attlist); 
    NamingEnumeration answer = 
    ctx.search(ldap_search_context, "(&(cn=*)({0}={1}))", new Object[] {ldap_id_field,netid},ctls); 
    } 
... 

回答

1

看來我錯了。所有過濾器都會查找具有任何CN並且與分別在ldap_id_field和netid中指定爲搜索參數的屬性名稱/值對匹配的條目。沒有「添加」:&意味着兩個過濾器表達式必須匹配。

+0

是的,我看你是對的。所以,如果ldap_id_field是說uid和網絡標識符號是user123,搜索將查找屬性爲cn = *和將匹配{0} = {1} uid和user123(即,UID = user123)。它是否正確? –

+0

我現在明白了。感謝名單。你幫助我理解。接受你的答案 –