Подтвердить что ты не робот

Everyauth vs Passport.js?

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

4b9b3361

Ответ 1

Взаимодействие с моими двумя центами, как разработчик Passport.

Прежде чем разрабатывать Passport, я оценил everyauth и решил, что он не соответствует моим требованиям. Итак, я приступил к реализации другого решения. Основные вопросы, которые я хотел рассмотреть, следующие:

Идиоматический Node.js

everyauth широко использует promises, а не Node подход использования обратных вызовов и закрытий. Promises - альтернативный подход к асинхронному программированию. Хотя это полезно в некоторых ситуациях высокого уровня, мне было неудобно использовать библиотеку аутентификации, которая принудительно применяла этот выбор для моего приложения.

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

Модульная

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

Для базовой иллюстрации сравните разницу между запуском $ npm install passport и $ npm install everyauth. Паспорт позволяет создавать ваше приложение, используя только нужные вам зависимости.

Эта модульная архитектура зарекомендовала себя как адаптируемая, облегчая сообщество, которое реализовало поддержку широкого спектра механизмов аутентификации, включая OpenID, OAuth, BrowserID, SAML и т.д.

Гибкая

Паспорт - это просто промежуточное программное обеспечение, используя соглашение fn(req, res, next), установленное Connect и Express.

Это означает, что сюрпризов нет, поскольку вы определяете, где вы хотите, ваши маршруты и когда вы хотите использовать аутентификацию. Также нет зависимости от конкретной структуры. Люди успешно используют Passport с другими фреймворками, такими как Flatiron

Напротив, любой модуль в everyauth может вставлять маршруты в ваше приложение. Это может затруднить отладку, поскольку неочевидно, как будет отправлен маршрут, и приведет к жесткой связи с конкретной инфраструктурой.

Паспорт также является ошибкой, который является полностью обычным, рядом с error-handling промежуточным программным обеспечением, как определено Express.

Напротив, у eachauth есть свои собственные соглашения, которые плохо подходят для проблемного пространства, вызывая давние открытые проблемы, такие как # 36

Идентификация API

Успешным достижением любой библиотеки аутентификации является ее способность обрабатывать аутентификацию API так же элегантно, как и веб-знак.

Я не буду подробно останавливаться на этом вопросе. Тем не менее, я призываю людей заглянуть в проекты брака Паспорта, OAuthorize и OAuth2orize. Используя эти проекты, вы можете реализовать аутентификацию с полным стеком, как для веб-приложений на основе HTML/сеанса, так и для клиентов API.

Надёжный

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

Напротив, интерфейсы Passport и его стратегии хорошо определены и широко охвачены модульными тестами. Issues, поданные против паспорта, как правило, в основном являются второстепенными запросами функций, а не ошибками, связанными с аутентификацией.

Несмотря на то, что этот проект является более молодым, этот уровень качества предлагает более зрелое решение, которое легче поддерживать и доверять будущему.

Ответ 2

Everyauth

  • более длинная история разработки, зрелая.
  • отличные документы
  • активно поддерживается
  • работает с широким спектром услуг.

Паспорт

  • модульная и прозрачная
  • хорошие документы
  • вклад сообщества (благодаря его модульности)
  • работает со всеми и с их собакой (опять же, благодаря модульности)

Ответ 3

Только что закончил переходить от everyauth к паспорту. Причины были следующие.

  • Everyauth недостаточно стабилен. Последняя солома была на прошлой неделе, когда меня укусила таинственная проблема, когда аутентификация facebook работала бы на local.host и на производственной среде, но не в моей тестовой среде на heroku, даже с идентичным кодом и базами данных и новым экземпляром приложения heroku. В этот момент у меня закончились теории о том, как изолировать проблему, поэтому удаление everyauth было следующим логическим шагом.
  • Способ обеспечения стандартной проверки подлинности с использованием учетных данных имени пользователя и пароля нелегко интегрируется с одним веб-приложением на одной странице.
  • Мне не удалось заставить everyauth работать с учетными записями Google.
  • Активное развитие everyauth похоже на снижение.

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

Поэтому, очевидно, я рекомендую зайти в паспорт.

Ответ 4

Я сначала попробовал Everyauth и с тех пор ушел в Passport. Это показалось мне несколько более гибким, особенно. если (например) мне нужна другая логика для разных поставщиков. Это также упрощает (imo) настройку пользовательских стратегий авторизации. С другой стороны, у него нет помощников вида, если они важны для вас.

Ответ 5

Раньше я использовал Everyauth более конкретно mongoose-auth. Мне было трудно разбить мои файлы, не демонтируя модуль allauth. Паспорт, на мой взгляд, более чистый метод для создания логинов. Существует запись, которую я нашел очень полезной http://rckbt.me/2012/03/transitioning-from-mongoose-auth-to-passport/

Ответ 6

Обратите внимание на дату этого сообщения, это укажет, насколько релевантно это сообщение.

По моему опыту, Everyauth не работал из коробки с паролем для входа в систему. Я использую express3, и я объявляю свое промежуточное ПО таким, как app.use(everyauth.middleware(app));, и он все еще не передавал в localauta local для моего шаблона. Последний коммит git был год назад, и я считаю, что новые пакеты сломали everyauth. Теперь я собираюсь попробовать паспорт.

Ответ 7

Это немного позже, но я нашел эту тему и (услышав все отрицательные отзывы о Everyauth) решил использовать Passport... и затем ненавидел его. Это было непрозрачно, только работало как промежуточное ПО (например, вы не могли аутентифицироваться с конечной точки GraphQL), и я ударил более одного сложного для отладки ошибки (например, Как мне две экспресс-сессии?).

Итак, я пошел искать и нашел https://github.com/jed/authom. Для моих нужд это намного лучшая библиотека! Это немного более низкоуровневая, чем две другие библиотеки, поэтому вам нужно делать что-то вроде того, как вставлять пользователя в сеанс самостоятельно... но это только одна строка, поэтому это действительно не имеет большого значения.

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