2017-08-23 35 views
0

這是我建立了我的護照ldapauth策略:護照ldapauth:錯誤:的getaddrinfo ENOTFOUND

let OPT = { 
    server: { 
     url: 'ldap://****:389', 
     bindDN: "", 
     bindCredentials: "", 
     searchBase: 'ou=Users,dc=astron,dc=hu', 
     searchFilter: "(uid={{username}})" 
    }, 
    usernameField: 'username', 
    passwordField: 'password', 
}; 
passport.use(new LdapStrategy(OPT, function (user, done) { 
    if (user != null) { 
     return done(null, user); 
    } else return done(new Error("i dont know"), null) 
})) 
app.use(passport.initialize()) 

這是在哪裏使用它:

async authenticate(req, res): Promise <boolean> { 
     return new Promise <boolean> ((resolve, 
        reject) => { 
        let authenticate: express.RequestHandler = <express.RequestHandler>passport.authenticate('ldapauth', (error, user, info) => { 
       if (error) { 
        return reject(error); 
       } 
       if (!user) { 
        return resolve(false); 
       } 
       req.user = user; 
       resolve(true); 
      }); 
      authenticate(req, res, 
       null); 
     } 
     ) 
    } 

,我得到這個錯誤:

Error: getaddrinfo ENOTFOUND **** ****:389

at errnoException (dns.js:28:10)

at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)

我的問題是爲什麼我得到錯誤?我確定網址和用戶名/密碼是正確的。

回答

0

此錯誤只有一個含義,您的節點應用程序無法連接到ldap服務器。可能是你正在給正確的IP /主機,但它不能從正在運行節點應用程序的機器訪問。

您可以嘗試使用同一臺計算機上的一些工具連接到ldap,並查看它是否能夠連接到服務器。

+0

謝謝你我會研究它 –

0

我在開發時有同樣的錯誤。我使用restify(let restify = require('restify'))進行https調用,在控制檯中顯示ENOTFOUND沒有特定上下文的錯誤。 後來我切換使用另一種方法

  1. HTTPS(require('https')
  2. XHR(const XMLHttpRequest = require('xhr2')

我同時使用,使Ajax調用相同的API。它工作沒有錯誤。

相關問題