使用passport-ldapauth的错误请求错误

时间:2016-06-10 07:24:00

标签: node.js ldap passport.js

  1. 我正在尝试使用身份验证用户名和密码 护照-ldapauth npm。在执行以下代码时我总是这样 将错误视为错误请求。请帮助我解决我的问题 代码。

    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*/
    

1 个答案:

答案 0 :(得分:1)

passport-ldapautheither 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