89 lines
2.4 KiB
JavaScript
89 lines
2.4 KiB
JavaScript
var express = require('express');
|
||
var ldap = require('ldapjs');
|
||
|
||
var app = express();
|
||
|
||
//创建LDAP client,把服务器url传入
|
||
var client = ldap.createClient({
|
||
url: 'ldap://ldap.kingsome.cn:389'
|
||
});
|
||
|
||
//创建LDAP查询选项
|
||
//filter的作用就是相当于SQL的条件
|
||
var opts = {
|
||
// filter: '(objectClass=posixAccount)', //查询条件过滤器,查找uid=kxh的用户节点
|
||
filter: '(uid=yulixing1)', //查询条件过滤器,查找uid=kxh的用户节点
|
||
scope: 'sub', //查询范围
|
||
timeLimit: 500 //查询超时
|
||
};
|
||
|
||
var user = [];
|
||
app.get('/', function(req, res, next) {
|
||
//将client绑定LDAP Server
|
||
//第一个参数:是用户,必须是从根节点到用户节点的全路径
|
||
//第二个参数:用户密码
|
||
client.bind('cn=admin,dc=kingsome,dc=cn', 'milesQWE321', function(err, res1) {
|
||
console.log(err);
|
||
//开始查询
|
||
//第一个参数:查询基础路径,代表在查询用户信心将在这个路径下进行,这个路径是由根节开始
|
||
//第二个参数:查询选项
|
||
client.search('ou=people,dc=kingsome,dc=cn', opts, function(err, res2) {
|
||
var entries = [];
|
||
//查询结果事件响应
|
||
res2.on('searchEntry', function(entry) {
|
||
//获取查询的对象
|
||
var user = entry.object;
|
||
entries.push(user);
|
||
users = entry;
|
||
});
|
||
|
||
res2.on('searchReference', function(referral) {
|
||
console.log('referral: ' + referral.uris.join());
|
||
});
|
||
|
||
//查询错误事件
|
||
res2.on('error', function(err) {
|
||
console.error('error: ' + err.message);
|
||
//unbind操作,必须要做
|
||
client.unbind();
|
||
});
|
||
|
||
//查询结束
|
||
res2.on('end', function(result) {
|
||
console.log('search status: ' + result);
|
||
console.log(entries)
|
||
if (entries.length !== 0) {
|
||
client.bind(entries[0].dn, 'yulixing123456', function(
|
||
err,
|
||
res3
|
||
) {
|
||
if (err) {
|
||
res.send({
|
||
err: err,
|
||
errmsg: err.message
|
||
|
||
})
|
||
} else {
|
||
res.send({
|
||
result: entries,
|
||
state: 0
|
||
});
|
||
}
|
||
});
|
||
} else {
|
||
res.send({
|
||
msg: '登录失败'
|
||
})
|
||
}
|
||
// res.send({
|
||
// entries
|
||
// })
|
||
//unbind操作,必须要做
|
||
client.unbind();
|
||
});
|
||
});
|
||
});
|
||
});
|
||
|
||
app.listen('6789');
|