【问题标题】:How to use express basic auth alongside passport如何在护照旁边使用快速基本身份验证
【发布时间】:2013-12-01 17:09:21
【问题描述】:

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

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

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

这是我使用 basicAuth 的 sn-p:

// 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 来实现这一点吗?

【问题讨论】:

    标签: javascript node.js authentication express


    【解决方案1】:

    也许你可以这样做:

    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。

    【讨论】:

    • 轰隆隆!看起来是这样做的。谢谢!
    猜你喜欢
    • 2016-03-26
    • 1970-01-01
    • 2019-01-01
    • 2017-02-13
    • 2018-12-21
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多