我在我的应用中使用了basicAuth中间件,但它确实有效。
但是,在我的路由功能中,我想获得用户用来进行身份验证的登录信息。假设req是我的请求变量,那应该是在req.remoteUser中(稍后在req.user中)。
但目前两者都设置为“真实”。我在调用app.use(app.router)之前检查是否使用了中间件,因此应该填充req请求!我还在basicAuth之后的行上使用了bodyParser,它正确地填充了请求。
谷歌上没有什么,只有一个问题在快递github说现在它的工作原理,req.user和req.remoteUser都有价值。
答案 0 :(得分:0)
如果我们想要设置req.user,那么需要为回调函数提供用户名(即使调用代码显然在它的上下文中有它)。
所以这样做(如我所说的伟大教程所说):
var express = require('express');
var app = express();
// Authenticator
app.use(express.basicAuth(function(user, pass, callback) {
var result = (user === 'testUser' && pass === 'testPass');
callback(null /* error */, result);
}));
app.get('/home', function(req, res) {
res.send('Hello World');
});
app.listen(process.env.PORT || 8080);
必须将功能更改为:
app.use(express.basicAuth(function(user, pass, callback) {
if (user === 'testUser' && pass === 'testPass') {
callback(null /* error */, user);
} else {
callback(null, null);
}
}));
对于那些想知道的人,是的,这意味着我们不能拥有一个名为空字符串的用户(否则它会被快递解释为假),这似乎很遗憾。