如何使用express.js获取remoteUser请求

时间:2013-10-17 15:21:13

标签: node.js express

我在我的应用中使用了basicAuth中间件,但它确实有效。

但是,在我的路由功能中,我想获得用户用来进行身份验证的登录信息。假设req是我的请求变量,那应该是在req.remoteUser中(稍后在req.user中)。

但目前两者都设置为“真实”。我在调用app.use(app.router)之前检查是否使用了中间件,因此应该填充req请求!我还在basicAuth之后的行上使用了bodyParser,它正确地填充了请求。

谷歌上没有什么,只有一个问题在快递github说现在它的工作原理,req.user和req.remoteUser都有价值。

1 个答案:

答案 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);
  }
}));

对于那些想知道的人,是的,这意味着我们不能拥有一个名为空字符串的用户(否则它会被快递解释为假),这似乎很遗憾。