Node.js PassportJS使用基本策略产生500次故障

Node.js PassportJS使用基本策略产生500次故障,node.js,authentication,express,passport.js,Node.js,Authentication,Express,Passport.js,我已经安装了passport和passport http。 我正在尝试让我的NodeJS应用程序允许使用express进行基本身份验证 我在accessControl/users中为测试目的定义了以下身份验证功能: var auth=function(user, callback){ console.log("Checking Credentials for "+user) if (user === 'chuck') { var userObj = { name:

我已经安装了
passport
passport http
。 我正在尝试让我的NodeJS应用程序允许使用express进行基本身份验证

我在
accessControl/users
中为测试目的定义了以下身份验证功能:

var auth=function(user, callback){
    console.log("Checking Credentials for "+user)
    if (user === 'chuck') {
        var userObj = { name:'chuck' };
        userObj.validPassword = function(password) {
            return (password === 'testa');
        }
        callback(null, userObj);
    }
}
这是我的特快路线:

var express = require('express');
var users = require('../accessControl/users');
var passport = require('passport')
  , BasicStrategy = require('passport-http').BasicStrategy;

var router = express.Router();

passport.use(new BasicStrategy(
            function(username, password, done) {
                users.auth({ username: username  }, function (err, user) {
                    if (err) { return done(err);  }
                    if (!user) { return done(null, false);  }
                    if (!user.validPassword(password)) { return done(null, false);  }
                    return done(null, user);

                });

            }

            ));


router.get('/test',
    passport.authenticate('basic',{session:true}),
    function(req, res){
    //TODO
    res.render('index');
});
首先访问
/test
会给我一个浏览器登录提示。 输入chuck作为用户名和testa作为密码将重定向到我的500错误页面,尽管文件index.ejs存在于我的视图文件夹中,并且在我注释掉passport.authenticate行时发送。 试图通过app.js记录产生的错误给了我
{}

编辑: 我正在使用运行应用程序

DEBUG=my app node./bin/www
在终端内部

编辑2:

我得到以下输出:

my-app Express server listening on port 3000
GET /test 401 18,4333 ms --
GET /test 500 29,882 ms -- 1905
(这将是一个有点冒险的过程,因为您没有提供有关错误的任何详细信息…)

是否您设置了
会话:true
,但尚未初始化会话中间件?尝试设置
会话:false

实际上,问题似乎源于以下代码行:

users.auth({ username: username  }, function (err, user) {
在上行中,您正在将自定义对象传递给
auth
,但
auth
除外
字符串
对象。尝试将上述行替换为:

users.auth(username, function (err, user) {

我假设第一个代码段驻留在
accessControl/users.js
中,并通过module.exports导出?另外,重新记录错误,从何处运行应用程序?如果是一个终端,你应该在那里看到错误输出。谢谢这些提示。我编辑了这个问题。不幸的是,没有在与故障相关的shell上执行输出。因为没有数据库会发生故障,也许代码中的某个地方有语法错误?尝试通过类似JSHint的方式运行它?谢谢,但不幸的是,这并没有修复500失败。@nesreka在您用特定错误更新问题时向我发出警告。不知何故,我无法获得任何错误输出。发送err对象会给出
{}
,编辑后,shell输出不会显示任何内容。@nesreka您是在使用express generator生成模板还是什么?尝试将调试环境变量设置为true。这将使调用堆栈出现在错误页面中。我通过谷歌搜索找到了记录错误的方法:,我需要将console.error(error.message)添加到我的500 error函数中。因此我能够解决这个问题,因为这只是一个小的初始化问题。