2013-08-07 3 views
0

Есть ли собственный способ для определения базовой аутентификации на узле?NodeJS Исходная базовая аутентификация

шаги были бы:

  • Найти заголовок аутентификации
  • Разбирают закодированное значение
  • разметить на толстой кишке и возвращают пользователь/пасс
  • Возможно дружественных обработки ошибок/сообщений при неудаче

Неиспользуемые рамочные решения Connect/Express.

Я понимаю, что это довольно тривиально делать вручную, но было бы неплохо иметь стандартный способ достичь этого, не изобретая колесо.

+0

Ну, вы полностью изменили вопрос после того, как я ответил. :-) Но если вы исключаете npm-модули apriori, ваш вопрос в основном является grep в этом каталоге: https://github.com/joyent/node/tree/master/lib. Я думаю, что ответ «не совсем, но вы можете легко создавать то, что вам нужно», а просто клонировать это репо и искать. –

ответ

0

Таким образом, HTTP auth имеет запутанную вещь. Если у вас есть URL с учетными данными, как этот https://user:[email protected]xample.com', that will parse just fine with url.parse`:

url.parse('https://user:[email protected]') 
{ protocol: 'https:', 
    slashes: true, 
    auth: 'user:password', 
    host: 'example.com', 
    port: null, 
    hostname: 'example.com', 
    hash: null, 
    search: null, 
    query: null, 
    pathname: '/', 
    path: '/', 
    href: 'https://user:[email protected]/' } 

Примечание Это url.parse(theUrl).auth не url.parse(theUrl).query.auth, как у вас есть.

Однако, это самый URL-адрес, именно эта строка. Если вы сообщите библиотеке HTTP, что она действительно запрашивает этот URL, учетные данные будут переведены в заголовок HTTP-запроса, так же как остальные URL-адреса, такие как хост, путь, порт и т. Д., Каждый преобразуется в детали запроса и внутри Заголовок HTTP-запроса и сам объект, полный URL-адрес нигде не найден, потому что он распространяется по слоям TCP и HTTP.

Какой длинный способ сказать, что вам нужно посмотреть в заголовках запроса: req.headers.authorization. url.parse просматривает простую строку URL и то, что у вас есть на сервере, является фактическим http.ClientRequest экземпляром.

Смежные вопросы