【问题标题】:Node.js: Express-basic-auth wont accept credentials from variableNode.js:Express-basic-auth 不会接受来自变量的凭据
【发布时间】:2021-03-12 06:10:59
【问题描述】:

我正在尝试使用 express 中的基本身份验证模块。

当我以文本形式设置用户名和密码时,它可以正常工作:

app.use(basicAuth({
    users: { 'user': 'pass' },
    unauthorizedResponse: getUnauthorizedResponse
}))

function getUnauthorizedResponse(req) {
  console.log(typeof req.auth)
    return req.auth
        ? ('Credentials ' + req.auth.user + ':' + req.auth.password + ' rejected')
        : 'No credentials provided'
}

但是用变量替换硬编码的值,我经常得到“凭据被拒绝”。

var user = config["loginUsename"];
var pass = config["loginPassword"];

app.use(basicAuth({
    users: { user: pass },
    unauthorizedResponse: getUnauthorizedResponse
}))

function getUnauthorizedResponse(req) {
  console.log(typeof req.auth)
    return req.auth
        ? ('Credentials ' + req.auth.user + ':' + req.auth.password + ' rejected')
        : 'No credentials provided'
}

我控制台记录了用户并传递变量,凭据匹配。我输出 req.auth 对象,它是相同的凭据。为什么这不起作用?

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    你有一个错字。这个:

    
    app.use(basicAuth({
        users: { user: pass },
        unauthorizedResponse: getUnauthorizedResponse
    }))
    
    

    应该是:

    
    app.use(basicAuth({
        users: { [user]: pass },
        unauthorizedResponse: getUnauthorizedResponse
    }))
    
    

    即您将用户名设置为“用户”而不是根据您的配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2018-08-21
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多