如何使用快递基本身份证和护照

时间:2013-12-01 17:09:21

标签: javascript node.js authentication express

我正在使用带有NodeJS / Express应用程序的Passport进行用户身份验证,而且它运行良好。但是,我想使用基本身份验证锁定某些部署(类似于Apache上的.htaccess基本HTTP身份验证),例如登台服务器。

更清楚的是,我有一个在本地运行所有内容的开发环境。我有一个测试环境,每次构建都会启动。我有一个用于黑盒测试的暂存环境,最后是一个生产环境。我想将基本身份验证应用于登台环境,以便用户/通过组合甚至可以访问它。一旦基本身份验证通过,所有其他功能都应该可用。

我已经尝试过Express内置的basicAuth,它运行良好,只是它填充了req.user,这是Passport使用的。因此,我的会话受到污染,因此使用Passport登录和注销不再正常工作,因为它认为用户已经登录。

以下是我使用basicAuth的片段:

// Basic auth (for staging env)
// Note: I'm checking for my dev env just to test this
if (process.env.NODE_ENV == 'development') {
    app.use(express.basicAuth('dev', 'abc123'));
}

我可以使用另一种方法代替basicAuth,或者我可以使用basicAuth来实现这种方法吗?

1 个答案:

答案 0 :(得分:2)

也许你可以这样做:

if (process.env.NODE_ENV == 'development') {
  app.use(express.basicAuth('dev', 'abc123'));
  app.use(function(req, res, next) {
    req.basicAuthUser = req.user;
    req.user = null;
    next();
  });
}

因此,当用户通过基本身份验证进行身份验证时,req.user会存储在某处(如果您需要),然后重置为null,以免混淆Passport。