2015-11-20 4 views
0

Я использую hapijs с hapi-auth-basic и пытаюсь отлаживать с помощью инспектора узлов.Когда функция hapi-auth-basic validate вызывается

Реализован пример на 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') 
 
    } 
 
}

Все другие маршруты set to auth: false. Я знаю, что он применяет «простую» стратегию, потому что, если я устанавливаю auth на false для/login, я нахожу точку останова в файле login.js.

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

Edit: Заголовок посылается клиентом как:

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":"[email protected]","password":"xcvx"} 

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

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

+0

Функция подтверждения вызывается здесь: https://github.com/hapijs/hapi-auth-basic/blob/master/lib/index.js#L65. Возможно, ваш 401 поступает из ранее в этом файле. Вам не хватает заголовка авторизации или он находится в неправильном формате? Как вы делаете запросы? Браузер? Можете ли вы представить полный неповрежденный пример кода, чтобы показать эту проблему? –

+0

@MattHarrison ты был прав. Заголовок авторизации отсутствует. github.com/hapijs/hapi-auth-basic/blob/master/lib/index.js#L37 ищет его. Необходимо проверить, почему клиент не включает его и обновить вопрос. благодаря – linktoemi

ответ

0

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

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

  2. Я объединил путь «jwt» с «основным» способом без уважительной причины.

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