2014-02-12 3 views
0

Я пытаюсь прототипировать аутентификацию LDAP в приложении интрасети, которое мы разрабатываем, и вот какой-то пример кода, который я написал, чтобы продемонстрировать, будет ли он работать. Тем не менее, я получаю ошибки, и я не могу найти решение для них в любом месте в Интернете.node-ldapauth ReferenceError: err не определен в

Вот полная Я получаю ошибку:

ReferenceError: err is not defined at /Users/tdeshpande/Dropbox/NodeAuth/app.js:32:54 at 
Object.handle (/Users/tdeshpande/node_modules/express/node_modules/connect/lib/middleware 
/basicAuth.js:89:7) at next (/Users/tdeshpande/node_modules/express/node_modules/connect 
/lib/proto.js:193:15) at Object.expressInit [as handle] (/Users/tdeshpande/node_modules 
/express/lib/middleware.js:30:5) at next (/Users/tdeshpande/node_modules/express 
/node_modules/connect/lib/proto.js:193:15) at Object.query [as handle] (/Users/tdeshpande 
/node_modules/express/node_modules/connect/lib/middleware/query.js:45:5) at next (/Users 
/tdeshpande/node_modules/express/node_modules/connect/lib/proto.js:193:15) at 
Function.app.handle (/Users/tdeshpande/node_modules/express/node_modules/connect 
/lib/proto.js:201:3) at Server.app (/Users/tdeshpande/node_modules/express/node_modules 
/connect/lib/connect.js:65:37) at Server.EventEmitter.emit (events.js:98:17) 

И вот мой код

var connect = require('connect'); 
var LdapAuth = require('ldapauth'); 
var express = require('express'); 
var app = express(); 

// Config from a .json or .ini file or whatever. 
var config = { 

    url: 'ldap://intranetldapserver:389', 
    adminDn: 'userName', 
    adminPassword: 'secret', 
    searchBase: 'dc=corp,dc=company,dc=com, ou=People', 
    searchFilter: '(&(objectcategory=person)(samaccountname=*))', 
    searchAttributes: ['samaccountname'] 

}; 

var ldap = new LdapAuth(config); 

var LdapAuthfunc = function(err, user) { 
    if (err) { 
     console.log("LDAP Auth error: %s", err); 
     callback(err); 
    } 
    else { 
     callback(err, user); 
    } 
} 

//Authenticator 
app.use(express.basicAuth(function (username, password, callback) { 
    ldap.authenticate(username, password, LdapAuthfunc(err, user)); 
    })); 


// Basic Authenticator 
// app.use(express.basicAuth('testUser', 'testPassword')); 



app.get('/', function(req, res) { 
res.send('Test Completed'); 
}); 

app.listen(8080); 

Может кто-нибудь сказать мне, что я делаю неправильно?

Спасибо!

ответ

1
app.use(express.basicAuth(function (username, password, callback) { 
    ldap.authenticate(username, password, LdapAuthfunc(err,user)); 
}));

Вы видите err по объему? (? Или user по этому вопросу)

Я думаю, вы можете просто хотите:

ldap.authenticate(username, password, LdapAuthfunc); 

Затем, после того, callback не в области. Вы можете связать это или что-то:

function ldapAuth(callback, err, user) { 
    if (err) { 
     console.log("LDAP Auth error: %s", err); 
     callback(err); 
    } 
    else { 
     callback(err, user); 
    } 
} 

// Authenticator 
app.use(express.basicAuth(function (username, password, callback) { 
    ldap.authenticate(username, password, ldapAuth.bind(null, callback)); 
})); 

Встреча jsHint!

P.S. PascalCase только для конструкторов, пожалуйста.

+0

Я этого не делаю. Как я должен обрабатывать логин? – Tejas

+0

@Tejas: см. Править. – Ryan

+0

Кроме того, я использую http://stackoverflow.com/questions/20525070/why-is-node-ldapauth-so-slow-even-when-cached как одну из ссылок для написания этого прототипа. – Tejas

Смежные вопросы