Когда вызывается функция проверки hapi-auth-basic

Я использую hapijs с hapi-auth-basic и пытаюсь отлаживать с помощью node-inspector.

Реализованный пример на странице github с небольшими изменениями, требующий базового пути авторизации при входе в систему / входа в систему вместо всех:

const validate = function(username, password, callback) {
  const user = users['john']; //john exists in a user array
  if (!user) {
    return callback(null, false);
  }
  callback(null, true, {
    id: user.id,
    name: user.name
  });
};
...
server.register(require('hapi-auth-basic'), (err) => {
  server.auth.strategy('simple', 'basic', {
    validateFunc: validate
  });
});

{
  method: 'POST',
  path: '/login',
  config: {
    auth: 'simple',
    handler: require('../../public/api/handlers/login.js')
  }
}

Для всех остальных маршрутов установлено значение auth: false. Я знаю, что она применяет "простую" стратегию, потому что если я установил для auth значение false для /login, я достигну точки останова в файле login.js.

Проблема в том, что я получаю 401 на вызов, и я никогда не получаю попадание в точку останова в функции проверки.

Изменить: Заголовок отправляется клиентом как:

Accept:*/*
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:POST 
Connection:keep-alive
Host:localhost:3000 
Origin:http://mac.local:3000
Referer:http://mac.local:3000/ User-Agent:Mozilla/5.0
(Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36

С содержанием как:

{"email":"a.b@com","password":"xcvx"}

То, что я, вероятно, неправильно понимаю, это шаги в базовой аутентификации. При входе в систему POST мне нужно отправить заголовок авторизации? Я думал, что эта страница передает полезную нагрузку для обработки, а затем, в случае успеха, все другие запросы будут передаваться по некоторому токену, например jwt, включая заголовок авторизации.

Я проверяю Aurelia-Auth. Метод, который делает вызов, похоже, не устанавливает заголовок. Нужно ли настраивать какие-либо настройки?

1 ответ

Решение

Я нашел проблему в моем случае.

  1. Я пытался проверить POST "логин", используя hapi-auth-basic. Это означает, что для этого требуется предварительно установленный ключ аутентификации. Но это не должно так работать. Вы отправляете имя пользователя и пароль в полезной нагрузке простым текстом, полагаясь на https, чтобы скрыть ваши треки. Затем сервер говорит "ОК" и отправляет обратно заголовок аутентификации с вашей зашифрованной идентификацией. Затем вы используете этот заголовок для любых звонков в "ограниченные" зоны.

  2. Я комбинировал путь "jwt" с "базовым" без какой-либо веской причины.

И урок 3. читайте исходный код github!

Другие вопросы по тегам