2016-06-10 56 views
0
  1. 我試圖使用 passport-ldapauth npm來驗證用戶名和密碼。在執行下面的代碼時,我始終會將 錯誤顯示爲錯誤的請求。請問我的 代碼有什麼問題。使用護照的錯誤請求錯誤 - ldapauth

    var express  = require('express'), 
        passport  = require('passport'), 
        bodyParser = require('body-parser'), 
        LdapStrategy = require('passport-ldapauth'); 
    
    // Credentials from the free LDAP test server by LDAP Search 
    
    var OPTS = { 
        server: { 
    
        url: 'ldap://54.227.207.201:389', 
        bindDn: 'CN=simple One,CN=Users,DC=test,DC=local', 
        bindCredentials: 'password', 
        searchBase: 'ou=passport-ldapauth', 
        searchFilter: '(uid={{username}})' 
        }, 
        usernameField: "CN=simple One,CN=Users,DC=test,DC=local", 
        passwordField: "password" 
    }; 
    
    var app = express(); 
    
    passport.use(new LdapStrategy(OPTS)); 
    
    app.use(bodyParser.json()); 
    
    app.use(bodyParser.urlencoded({extended: false})); 
    
    app.use(passport.initialize()); 
    
    
    app.use(passport.session());  
    
    app.post('/login', passport.authenticate('ldapauth', {session: false}), function(req, res) { 
    
    // you can refer code from here:https://github.com/vesse/passport-ldapauth 
    
        res.send({status: 'ok'});//will generate error 'Bad Request' 
    
    }); 
        /*For more info:https://github.com/vesse/passport-ldapauth/issues/45*/ 
    

回答

0

passport-ldapauth返回時壞請求either username or password value is missing。在你的情況下,這可能是因爲你已經定義了usernameField: "CN=simple One,CN=Users,DC=test,DC=local",即。登錄表單應具有登錄字段時使用的用戶名,如readme中所述。

如果您的登錄表單(或XHR帖子)在名稱爲weirdUsername的字段中發送用戶名,例如。 <input type="text" name="weirdUsername"/>,你可以定義usernameField : weirdUsername。自述文件中再次提到的缺省值是用戶名爲username,密碼爲password

+0

我想在使用郵遞員的NodeJS中測試passport-ldapauth,並且我一直收到Bad請求。我究竟做錯了什麼?我遵循了閱讀我所提到的指示。 – codejunkie

+0

PS:我是一個ldap身份驗證的新手。 – codejunkie

+0

我正在使用ldaps,並且我的用戶名字段和密碼字段已被正確填寫。 – codejunkie