Node.js: Express-basic-auth не будет принимать учетные данные от переменной

#node.js #express

Вопрос:

Я пытаюсь использовать базовый модуль аутентификации в 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, это те же учетные данные. Почему это не работает?

Ответ №1:

У вас опечатка. Этот:

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

 

должно быть:

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

 

Т. е. Ваше имя пользователя «пользователь» не соответствует вашей конфигурации.