Вопрос по connect, node.js, passport.js, everyauth – Everyauth vs Passport.js?

120

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

Другаяalternative это использоватьGrant - это только если вы ищете промежуточное программное обеспечение OAuth. Он поддерживает сотни провайдеров и настраивается с помощью простой структуры данных JSON. simo

Ваш Ответ

7   ответов
1

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

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

2

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

4

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

Я заметил, что Passport.js говорит, что это разделяет проблемы, и мне интересно, все ли построено аналогично. EhevuTov
18
Passport modular and transparent good docs community contributions (owing to it's modularity) works with everyone and their dog (again, owing to it's modularity) Everyauth long development history, mature. no longer maintained great docs works with a wide range of services
Everyauth больше не поддерживается активно.
@YasharF спасибо, что сообщили мне об этом. Ответ был обновлен
2

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

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

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

16

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

Everyauth is not stable enough. The final straw was last week I got bitten by a mysterious issue where facebook authentication would work on local.host and on the production environment, but not in my test environment on heroku, even with identical code and databases and a new heroku app instance. At that point I ran out of theories as to how to isolate the issue, so removing everyauth was the logical next step. The way it provides support for standard authentication using username/password credentials is not easily integrated with a single page web app approach. I was unable to get everyauth to work with Google accounts. Active development of everyauth seems on the decline.

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

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

Спасибо за правдивую историю, хотя последняя капля не ясна.
188

Звонить с моими двумя центами, как разработчикПаспорт.

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

Idiomatic Node.js

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

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

Modular

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

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

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

Flexible

Паспортjust middleware, с использованиемfn(req, res, next) Конвенция, установленная Connect and Express.

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

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

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

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

API Authentication

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

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

Reliable

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

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

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

@Jared Hanson: У вас есть пример использования паспорта с RESTfull auth?
Согласитесь с @ErikReppen, что обещания не имеют значения в этом сравнении.
@EhevuTov & gt; выберите этот ответ, он гораздо более полный, чем мой, и я согласен на 100% с его наблюдениями.
Паспорт рулит !!!
Я не вижу, как обещания действительно меняют цитируемые преимущества ванильного стиля обратного вызова. Вы в значительной степени делаете то же самое с меньшим количеством кода в сценариях, где линейный ряд событий вызывает дополнительные обратные вызовы.

Похожие вопросы