2016-05-19 4 views
1

У меня есть приложение Node.js, которое предлагает несколько разных маршрутов перед MongoDB. Мне нужно убедиться, что только эти аутентифицированные запросы могут получить доступ к этим маршрутам.Торговое имя пользователя и пароль для токена

В идеале, я хочу настроить его так, чтобы имя пользователя и пароль поступали в API, и в ответ мы возвращаем им токен. Я не против управлять жестами внутри MongoDB самостоятельно, но мне нужно убедиться, что токен, который мы даем, может сделать аутентифицированные запросы. Я не хочу принуждать пользователя отправлять свои учетные данные каждый раз, только токен.

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

+0

Вы можете создать свою собственную стратегию – Sumeet

+0

Да, ТНХ @Sumeet это звучит, как, возможно, не существует стратегии для решения этой проблемы. Этот вопрос имеет некоторую полезную информацию: http://stackoverflow.com/questions/17397052/nodejs-passport-authentication-token , но это предполагает использование «локальной стратегии» для аутентификации на начальном этапе, а затем вручную создание токена и, наконец, используя паспорт-http-носитель Стратегия для проверки токенов. –

ответ

1

Какую стратегию я описываю здесь?

Опишите Local Strategy.

В соответствии с их описанием:

Этот модуль позволяет проверять подлинность, используя имя пользователя и пароль в приложениях Node.js.

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

Стратегии Passport auth просто предоставляют различные способы аутентификации (или простым языком входа) пользователя, а не как сохранить этот логин. Персистентность входа обычно выполняется с сеансами пользователя.

Один из способов решения этой проблемы - объединить локальную стратегию с express session middleware. Комбинация этих двух функций позволяет использовать довольно простую систему аутентификации, которая требует от пользователя входа в систему один раз, а затем сохраняется сеанс.

В типичном веб-приложении учетные данные, используемые для аутентификации пользователя, будут передаваться только во время запроса на вход. Если аутентификация завершается успешно, сеанс будет создан и поддерживается с помощью набора файлов cookie в браузере пользователя.

Каждый последующий запрос не содержит учетных данных, а скорее уникального файла cookie, который идентифицирует сеанс. Чтобы поддерживать сеансы входа в систему, Passport будет сериализовать и десериализовать пользовательские экземпляры в сеансе и из него.

PassportJS docs Приведите пример, как достичь этого.

+0

Спасибо @nem, но не требует, чтобы имя пользователя/пароль отправлялось с каждым запросом? –

+0

@SSHЭто проверено мое редактирование. Если вы хотите, я могу добавить примеры кода. – nem035

-1

Для этого вы должны предпочесть генерировать токены JWT для входа в систему, а затем использовать токен, чтобы всегда аутентифицировать действия пользователя.

Следующие шаги должны реализовать этот стиль системы маркер входа

  1. генерировать маркер на Логин
  2. проверить, когда маркер Прилагаемые и использовать декодированные данные для идентификации пользователю

использование должно надлежащим промежуточное ПО для защиты вашего api.

Вот ссылка, которую вы могли бы следовать:

https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens