如何使用快递基本authentication和护照

我正在使用Passport和NodeJS / Express应用程序进行用户身份validation,并且工作良好。 不过,我想用基本身份validationlocking某些部署(类似于Apache上的.htaccess基本HTTP身份validation),例如登台服务器。

更清楚的是,我有一个在本地运行的开发环境。 我有一个testing环境,每个构build启动。 我有一个临时环境用于黑盒testing,最后是一个生产环境。 我想申请基本的身份validation到登台环境,以便用户/传递组合需要甚至到达它。 基本身份validation通过后,所有其他function应该可用。

我已经试过Express内置的basicAuth,它运行良好,只是它填充了req.user,这是Passport使用的。 因此,我的会话被污染,以至于Passportlogin和登出不再正常工作,因为它认为用户已经login。

以下是我使用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来实现这个function吗?

也许你可以这样做:

 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(); }); } 

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