Когда вызывается функция проверки 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 ответ
Я нашел проблему в моем случае.
Я пытался проверить POST "логин", используя hapi-auth-basic. Это означает, что для этого требуется предварительно установленный ключ аутентификации. Но это не должно так работать. Вы отправляете имя пользователя и пароль в полезной нагрузке простым текстом, полагаясь на https, чтобы скрыть ваши треки. Затем сервер говорит "ОК" и отправляет обратно заголовок аутентификации с вашей зашифрованной идентификацией. Затем вы используете этот заголовок для любых звонков в "ограниченные" зоны.
Я комбинировал путь "jwt" с "базовым" без какой-либо веской причины.
И урок 3. читайте исходный код github!