簡體   English   中英

帶有Node JS的LDAP JS查找傳入字符串模式的用戶

[英]LDAP JS with Node JS Finding users passing in patterns of string

我目前在Angular JS應用程序中使用LDAP JS進行身份驗證,並且一切正常。

我現在正在建立一個新的視圖,我的要求是:

  • 我有一個文本框,管理員將在其中輸入可能是LDAP中存在的用戶ID的幾個字母。
  • 我想在預輸入/建議中顯示LDAP中存在的應用程序匹配ID。 我知道預輸入是如何工作的,這樣的不是一個問題。 問題是我怎么能傳遞一個rejex或模式匹配類型的事情uidsearch()方法。

我的示例代碼在這里:

function GetAllLDAPUser(dnFilter, res) {

    client.search('uid=**WHAT-PATTERN-CAN-I-PASS-HERE**' + dnFilter, opts, function(err, result) {

            result.on('searchEntry', function(entry) {

                // I usually read entry.object or entry.raw here , that works

            });
            result.on('end', function(result) {

                .......
            });
        }
    }
}

所以,問題是我應該傳球到位的WHAT-PATTERN-CAN-I-PASS-HERE

結果:假設我鍵入an 該預輸入將顯示所有用戶ID開始ananaanamonanalisa等。

我已經寫了最終的解決方案,並在項目的存儲庫中解決了問題

對於模式匹配,我們需要在選項對象中使用“過濾器”字段,並將其傳遞給搜索方法。 所以我最終做了如下的事情:

var dnFilter = 'ou=People,o=Intra,dc=YOURCOMPANY,dc=com'; //depends on your LDAP settings.
var query;
var matchedUsers = [];
query.LDAPName = "dummy"; //some name which resides in LDAP 
//You can even have one simple variable rather than having this query object.
opts = {
    scope: 'sub',
    filter: (shcDisplayName = '+ query.LDAPName + ')
    '
};

//Do not use 'shcDisplayName' , this will be any variable stored in your LDAP object. You need get 
//the structure of LDAP end point you are working on. For me, I had one variable 'shcDisplayName'
//on which I wanted to play so I am using this variable in my filter.
client.search(dnFilter, opts, function(err, result) {

        result.on('searchEntry', function(entry) {
                matchedUsers.push({
                    'Name': entry.object.shcDisplayName,
                    'Id': entry.object.uid
                });
            }

            result.on('end', function(result) {

                    if (matchedUsers.length) { //if any match was found.

                        //send the json result back
                        res.json(matchedUsers);

                        //if you want to send json back, do not use res.send() otherwise you will end up getting
                        //circular reference error. 
                    }
                }

                result.on('error', function(ex) {
                    //Handle errors here if any
                });

            });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM