无法通过req来验证app.js中的功能

时间:2013-09-07 23:27:56

标签: node.js express

在快递应用程序的app.js文件中,我在req.params.company上未定义。这是相关的代码......

var mongoose = require( 'mongoose' );
var authenticate = express.basicAuth(function(user, pass, req, res, next, callback) {
    Auth = mongoose.model('Auth');
    Auth.findOne({ token: user }, function(err, authObject){
            if (err) return next(err);
        //The next line is where the problem lies.  Req.params.company is undefined.    
            var result = (user === authObject.token && req.params.company === authObject.companyName);
            console.log('result = ' +result);
            return result;
            //callback(null /* error */, result);
            })
});



app.get('/api/:company', authenticate, api.company);

我认为这与问题无关,但以下是我的auth.js模型中的代码。

var mongoose = require( 'mongoose' );

function toLower (v) {
  return v.toLowerCase();
}

var authSchema = new mongoose.Schema({
    token : { type : String, required : true, unique : true, index: true, set: toLower },
    companyName : { type : String, set: toLower },
    brandName : { type : String, set: toLower },
    active : Boolean
});

var Auth = mongoose.model('Auth', authSchema);

最后,对于上下文,此代码的目标只是验证作为http basic auth中的用户变量传递的令牌(密码为空)。我还尝试为作为路由参数提供的公司名称授权令牌。

有人可以帮我理解为什么req.params.company会以未定义的形式返回?如果我自己记录“req”,我会回到“[功能]”。

1 个答案:

答案 0 :(得分:0)

看起来你在错误的地方寻找代码。也许做一个console.log(参数)。此外,这里还有一个代码链接,可以提供帮助:http://blog.modulus.io/nodejs-and-express-basic-authentication