在快速应用程序的 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 基本身份验证中的用户变量传递(密码为空)。我还尝试为作为路由参数给出的公司名称授权令牌。
有人可以帮我理解为什么 req.params.company 会以未定义的形式返回吗?如果我自己记录“req”,我会返回“[Function]”。