- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将以下代码转换为使用 Promise。它正在工作并输出事件目录中的用户属性。
var client = ldap.createClient({
url: ldap_url
});
client.bind(ldap_username, ldap_password, function (err) {
client.search(ldap_dn_search, opts, function (err, search) {
search.on('searchEntry', function (entry) {
var user = entry.object;
// It is working!!!. It outputs all user attributes.
console.log(user);
});
});
});
以下是我的尝试,但它没有输出任何内容。
var Promise = require('promise');
var client_bind = Promise.denodeify(client.bind);
var client_search = Promise.denodeify(client.search);
client_bind(ldap_username, ldap_password)
.then(function(err){
client_search(ldap_dn_search, opts)
.then(function(search){
var search_on = Promise.denodeify(search.on);
search_on('searchEntry')
.then(function(entry){
var user = entry.object;
// It doesn't output anything !!!
console.log(user);
});
});
});
最佳答案
我也遇到了同样的问题。搜索会发出事件,因此我们需要一些东西来处理它们并沿着链进一步传递。这是一段适合我的代码:
var ldap = require('ldapjs');
var promise = require('bluebird');
var client = ldap.createClient({url: app.settings['ldap']['server']});
var uid;
promise.promisifyAll(client);
function searchPromise(res, notfoundtext) {
return new Promise(function(resolve, reject) {
var found = false;
res.on('searchEntry', function(entry) {
found = true;
resolve(entry);
});
res.on('error', function(e) {
reject(e.message);
});
res.on('end', function() {
if (!found) {
reject(notfoundtext);
}
});
});
}
client.searchAsync(app.settings['ldap']['baseDn'], {filter: '(mail='+credentials.email+')', scope: 'sub'})
.then(function(res) {
return searchPromise(res, 'User isn\'t exists.');
})
.then(function (entry) {
uid = entry.object.uid;
return client.bindAsync(entry.object.dn, credentials.password);
})
.then(function() {
return client.searchAsync('cn='+app.settings['ldap']['group']+',cn=groups,'+app.settings['ldap']['baseDn'], {scope: 'sub', filter: '(memberUid='+uid+')'});
})
.then(function(res) {
return searchPromise(res, 'User is not in group ' + app.settings['ldap']['group']);
})
.then(function() {
console.log('All is ok');
})
.catch(function(message) {
console.log('Error:' + message);
});
在搜索之后,我立即添加一个步骤来捕获事件,处理它们,并将其沿着链进一步传递。这使得函数 searchPromise 成立。
祝你编码顺利)
关于javascript - 使用带有 Promise 的 ldapjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30682597/
我正在尝试使用 NodeJS 构建 LDAP 客户端,代码如下: var ldap = require('ldapjs'); var client = ldap.createClient({
我遇到的问题是在 methodStatus 设置为 true 之前返回(因此即使我可以在控制台日志中看到“成功”,返回也始终为 false) function anmelden(username, u
我想使用 Node.js ldapjs client api #modify删除 LDAP 条目的属性。 通过 shell 和 ldapmodify ... -f removeAttribute.ld
我正在尝试使用“搜索”方法在 ldapjs 中进行搜索,但它对我不起作用。 这是来自终端的响应: > Result is: SearchResponse { messageID: 2, pro
我在项目的两个部分中使用 ldapjs。第一个是对 Passportjs 使用 Passport-windowsauth 策略,第二个是我的身份验证功能的一部分,我在其中连接以检索用户 Angular
我在 Node.js 和 ldapjs 中使用以下代码创建了一个身份验证服务。 var when = require ('when'); var AuthenticationError = requi
所以我目前正在运行安装了 ldapjs 的 node.js。我的目标是拥有一个使用 ldapjs 以允许用户使用用户名和密码登录的系统。 我一直在阅读 http://ldapjs.org现在有一段时间
我想将以下代码转换为使用 Promise。它正在工作并输出事件目录中的用户属性。 var client = ldap.createClient({ url: ldap_url }); client
我正在将用户绑定(bind)到 ldap 并对其进行身份验证,如下面的代码所示。现在我正在获取对象的所有属性,例如我想要的是仅获取“distingushedName”。ldapjs 中有这样的方法吗?
我一直在尝试转换以下 ldapsearch查询 ldapsearch -H ldap://ldap.berkeley.edu -x -b 'ou=people,dc=berkeley,dc=edu'
是否可以让 ldapjs(使用 nodejs)使用 TLS 而不仅仅是 SSL? 如果是,我该如何设置? 如果不是,他们是否有任何其他支持 TLS 的 nodejs ldap 库? 我能找到的唯一信息
过去几天一直在玩弄 NodeJS,并在使用 ldapjs 模块的 LDAP 连接上运行卡住了。背景故事,我尝试连接的 Active-Directory 服务器支持 LDAPv3。 下面是我用来连接到
我使用此代码使用 Passport-ladpjs 模块进行 LDAP 身份验证。不需要绑定(bind),因为它已经在模块中处理过了。使用我的凭据后,我无法登录。输入我的凭据后,我将返回到失败重定向页面
我正在尝试从 LDAP 获取数据,并且已成功获取数据,但它没有写入变量,因此在执行代码后我可以对数据进行一些检查。 var server = LdapJS.createClient({ url
我使用node.js expressjs ldapjs来实现身份验证。 我有一个要求如下: 验证用户身份 查找用户所属的所有群组名称 查找用户组所属的父组名称,并具有配置的深度级别(大多数情况下为 3
我在这里发布了类似的内容:Use ldapjs with promise .不幸的是,它仍然没有解决。 这次我尝试了 Bluebird ,希望我能得到一些运气。 // https://www.npmj
我在Ubuntu 20.04和OpenLDAP2.4.49环境中工作。。如何从ldapjs检索详细的错误信息?(ldapjs版本为3.0.5)。例如,如果我在更改密码一次后立即更改密码,然后执行以下命
我在使用 ldapjs lib 连接到 LDAP 服务器时遇到问题。由于某种原因,我无法使用我的凭据绑定(bind)到 ldap 服务器: var ldap = require('ldapjs');
我正在尝试使用以下 node.js 文件实现基本的 ldap 绑定(bind)。不幸的是,我一直收到代码 128 的绑定(bind)错误。我在网上查找并没有找到代码 128 的引用。我试图搜索的 LD
我是nodejs新手,在执行 Node 文件时遇到这个问题。我在 centos 7 上。当我尝试使用 LDAPJS 连接到 LDAP 时。当 LDAP 可用时它工作正常,但无法连接到服务器,它显示这个
我是一名优秀的程序员,十分优秀!