Не удается прочитать свойство 'username' неопределенной ошибки при использовании passport-windowsauth - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь использовать passportjs с passport-windowsauth для аутентификации моего экспресс-приложения в активном каталоге. Тем не менее, паспорт не может найти поля username и password в теле моего post для маршрута входа в систему. Я получаю следующую ошибку:

TypeError: Cannot read property 'username' of undefined

app.js

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var passport = require('passport');
var WindowsStrategy = require('passport-windowsauth');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(passport.initialize());

app.use('/', indexRouter);
app.use('/users', usersRouter);

passport.use(new WindowsStrategy({
ldap: {
    url: 'ldap://example.com/DC=example,DC=com',
    base: 'DC=example,DC=com',
    bindDN: 'someuser',
    bindCredentials: 'somepassword'
},
integrated: false
}, function(user, done){
    if (user) {
        var user = user
        return done(null, user);
    } else {
        return done(null, false);
    }
}));

module.exports = app;

. / Маршруты / index.js

var express = require('express');
var router = express.Router();
var passport = require('passport');

router.get('/login', function(req, res, next) {
  res.send('<form action="/login" method="post"><div><label>Username:</label><input type="text" name="username"/></div>' +
          '<div><label>Password:</label><input type="password" name="password"/></div><div><input type="submit" value="Log In"/></div></form>')
});

router.post('/login', passport.authenticate('WindowsAuthentication', {session: false, successRedirect: '/test'})
);

router.get('/test', function(req, res, next) {
  res.send("Yay!");
});

module.exports = router;

Я проверил учетную запись пользователя, которую я использую для привязки, и учетные данные, безусловно, действительны.

Любая помощь будет принята с благодарностью, поскольку я почесываю голову, размышляя о том, чего мне не хватает.

...