Существуют ли какие-либо библиотеки аутентификации пользователей для node.js? В частности, я ищу что-то, что может выполнить аутентификацию по паролю для пользователя (с использованием пользовательской базы данных с аутентификацией на основе сервера) и связать этого пользователя с сеансом.
Перед тем, как написать библиотеку аутентификации, я подумал, что я узнаю, знают ли люди о существующих библиотеках. Не удалось найти ничего очевидного через поиск в Google.
-Shreyas
omniauth
(rails) или pythonsocial-auth
. Пользователи PHP (и других распространенных языков веб-сервера) также могут свободно добавлять свои эквиваленты.Ответы:
Если вы ищете систему аутентификации для Connect или Express, стоит изучить Passport: https://github.com/jaredhanson/passport
(Раскрытие: я разработчик Passport)
Я разработал Passport после изучения подключения и аутентификации. Хотя они оба являются отличными модулями, они не удовлетворяли моим потребностям. Я хотел что-то более легкое и ненавязчивое.
Паспорт разбит на отдельные модули, поэтому вы можете использовать только то, что вам нужно (OAuth, только при необходимости). Паспорт также не монтирует какие-либо маршруты в вашем приложении, предоставляя вам гибкость в определении того, когда и где вы хотите аутентификацию, и перехватывает контроль того, что происходит, когда аутентификация проходит успешно или не удается.
Например, вот двухэтапный процесс настройки аутентификации на основе форм (имя пользователя и пароль):
Дополнительные стратегии доступны для аутентификации через Facebook, Twitter и т. Д. При необходимости можно подключить пользовательские стратегии.
источник
done(null,false,{ message:'Incorrect username.' })
это ужасно, так как мы не знаем, каковы все эти параметры.Сессия + Если
Я полагаю, причина того, что вы не нашли много хороших библиотек, заключается в том, что использование библиотеки для аутентификации в большинстве случаев слишком сложное.
То, что вы ищете, это просто привязка сессии :) Сессия с:
Это оно.
Я не согласен с вашим выводом, что плагин connect-auth - это путь.
Я также использую Connect, но я не использую Connect-Auth по двум причинам:
ИМХО ломает connect-auth очень мощную и легкую для чтения архитектуру луковичных колец connect. А не ходи - моё мнение :). Вы можете найти очень хорошую и короткую статью о том, как работает connect, и об идее лукового кольца здесь .
Если вы - как написано - просто хотите использовать простой или http логин с базой данных или файлом. Connect-auth слишком велик. Это больше для таких вещей, как OAuth 1.0, OAuth 2.0 и Co
Очень простая аутентификация с подключением
(Это завершено. Просто запустите его для тестирования, но если вы хотите использовать его в рабочей среде, обязательно используйте https) (И чтобы быть совместимым с REST-принципом, вы должны использовать POST-запрос вместо GET-запроса b / c вы меняете состояние :)
НОТА
Я написал это заявление более года назад, и в настоящее время у меня нет активных проектов узлов. Так что в Express могут быть изменения API. Пожалуйста, добавьте комментарий, если я должен что-то изменить.
источник
Похоже, что плагин connect-auth для промежуточного программного обеспечения подключения - это как раз то, что мне нужно: http://wiki.github.com/ciaranj/connect-auth/creating-a-form-based-strategy
Я использую экспресс [ http://expressjs.com ], так что подключаемый модуль очень хорошо вписывается, так как экспресс находится в подклассе (хорошо - прототип) из connect
источник
Я в основном искал то же самое. В частности, я хотел следующее:
В итоге я создал свою собственную функцию промежуточного программного обеспечения,
check_auth
которую я передаю в качестве аргумента каждому маршруту, который я хочу аутентифицировать.check_auth
просто проверяет сеанс и, если пользователь не вошел в систему, затем перенаправляет их на страницу входа, например так:Затем для каждого маршрута я гарантирую, что эта функция передается как промежуточное ПО. Например:
Наконец, нам нужно обработать процесс входа в систему. Это просто:
Во всяком случае, этот подход был в основном разработан, чтобы быть гибким и простым. Я уверен, что есть множество способов улучшить это. Если у вас есть, я очень хотел бы получить ваши отзывы.
РЕДАКТИРОВАТЬ: это упрощенный пример. В производственной системе вы никогда не захотите хранить и сравнивать пароли в виде простого текста. Как указывает комментатор, есть библиотеки, которые могут помочь в управлении паролем.
источник
Также посмотрите на все, если вы хотите, чтобы сторонние / социальные сети вход в систему интеграции.
источник
Вот код для базовой аутентификации из одного из моих проектов. Я использую его против CouchDB с дополнительным кешем данных аутентификации, но я удалил этот код.
Оберните метод аутентификации вокруг вашей обработки запроса и предоставьте второй обратный вызов для неудачной аутентификации. Обратный вызов успеха получит имя пользователя в качестве дополнительного параметра. Не забудьте правильно обрабатывать запросы с неправильными или отсутствующими учетными данными при сбое обратного вызова:
источник
Другой подход к аутентификации - это Passwordless, модуль аутентификации на основе токенов для экспресс, который обходит внутреннюю проблему паролей [1]. Это быстро реализуется, не требует слишком много форм и предлагает лучшую безопасность для среднего пользователя (полное раскрытие: я автор).
[1]: пароли устарели
источник
Прошло несколько лет, и я хотел бы представить свое решение для аутентификации для Express. Это называется Lockit . Вы можете найти проект на GitHub и краткое введение в моем блоге .
Так в чем же отличие существующих решений?
require('lockit')
,lockit(app)
, сделаноusername
иpassword
.Посмотрите на примеры .
источник
Существует проект, который называется « Гипсокартон» и реализует систему входа пользователей с помощью Passport, а также имеет панель управления пользователями. Если вы ищете полнофункциональную систему аутентификации и управления пользователями, похожую на ту, что есть в Django, но для Node.js, то это она. Я обнаружил, что это действительно хорошая отправная точка для создания приложения для узла, для которого требовалась система аутентификации и управления пользователями. См . Ответ Джареда Хансона о том, как работает Паспорт.
источник
Вот две популярные библиотеки Github для аутентификации узла js:
https://github.com/jaredhanson/passport (внушаемо)
https://nodejsmodules.org/pkg/everyauth
источник
Простой простой пример использования mongo для API, который обеспечивает аутентификацию пользователя для клиента Angular
в app.js
для вашего маршрута что-то вроде этого:
Затем в ваших маршрутах, требующих аутентификации, вы можете просто проверить сеанс пользователя:
источник
Вот новая библиотека аутентификации, которая использует метки времени. Токены могут быть отправлены пользователям по электронной почте или в виде текстовых сообщений без необходимости сохранять их в базе данных. Он может использоваться для аутентификации без пароля или для двухфакторной аутентификации.
https://github.com/vote539/easy-no-password
Раскрытие информации: я разработчик этой библиотеки.
источник
Если вам нужна аутентификация с помощью единого входа (SSO) с учетной записью пользователя Microsoft Windows. Вы можете попробовать https://github.com/jlguenego/node-expose-sspi .
Это даст вам
req.sso
объект, который содержит всю информацию о клиенте (логин, отображаемое имя, sid, группы).Отказ от ответственности: я автор node-expose-sspi.
источник
кисло-авт
Легкий модуль аутентификации пользователя с нулевой конфигурацией. Для этого не нужна отдельная база данных.
https://www.npmjs.com/package/sweet-auth
Это просто как:
источник