Everyauth vs Passport.js?

Everyauth et Passeport.js semblent avoir très caractéristiques similaires. Quelles sont les comparaisons positives et négatives entre les deux qui me donneraient envie d'utiliser l'une par rapport à l'autre?

121
demandé sur Martijn Pieters 2012-08-15 22:27:53

7 réponses

sonnant avec mes deux cents, comme le développeur de Passeport .

avant de développer Passeport, j'ai évalué everyauth et déterminé qu'il ne répondait pas à mes exigences. Donc, j'ai commencé à mettre en œuvre une solution différente qui le ferait. Les principaux points que je voulais aborder sont les suivants:

Noeud Idiomatique.js

everyauth fait largement usage de promesses, au lieu de noeuds de approche de l'utilisation des rappels et des fermetures. Les promesses sont une approche alternative à la programmation asynchrone. Bien qu'utile dans certaines situations de haut niveau, je n'étais pas à l'aise avec une bibliothèque d'authentification forçant ce choix sur mon application.

de plus, je trouve qu'une bonne utilisation des callbacks et des fermetures donne un code concis, bien structuré (presque fonctionnel). Une grande partie de la puissance du noeud lui-même vient de ce fait, et Passeport suit.

modulaire

Passport emploie un schéma de conception stratégique pour définir une séparation claire des préoccupations entre le module central et divers mécanismes d'authentification. Cela présente un certain nombre d'avantages, notamment une taille de code globale plus petite et des interfaces bien définies et testables.

pour une illustration de base, comparez la différence entre l'exécution $ npm install passport et $ npm install everyauth . Passeport vous permet d'élaborer votre demande n'utilisez que les dépendances dont vous avez réellement besoin.

cette architecture modulaire s'est révélée adaptable, facilitant la mise en place d'une communauté qui prend en charge une grande variété de mécanismes d'authentification, dont OpenID, OAuth, BrowserID, SAML, etc.

Flexible

Passeport juste middleware , à l'aide de la fn(req, res, next) convention établi par Connecter et Express.

cela signifie qu'il y a no surprises , comme vous définissez où vous voulez vos routes et quand vous voulez utiliser l'authentification. Il n'y a pas non plus de dépendance à un cadre spécifique. Les gens utilisent avec succès passeport avec d'autres cadres tels que Flatiron

en revanche, n'importe quel module dans everyauth peut insérer des routes dans votre application. Cela peut faciliter le débogage difficile, car il est pas évident comment une route sera expédiée et conduit à un couplage serré avec un cadre spécifique.

Passeport également des erreurs d'une manière qui est entièrement conventionnelle, à côté de traitement des erreurs middleware tel que défini par Express.

en revanche, everyauth a ses propres conventions, qui ne correspondent pas bien à l'espace de problème, provoquant des questions ouvertes de longue date tels que #36

authentification API

le couronnement de n'importe quelle bibliothèque d'authentification est sa capacité à traiter l'authentification API aussi élégamment que la signature basée sur le web.

Je n'expliquerai pas grand-chose sur ce point. Cependant, j'encourage les gens à regarder dans les projets des frères et sœurs de passeport, Autoriser et Autoriser . En utilisant ces projets, Vous pouvez implémenter l'authentification "full-stack", les applications Web HTML / session et les clients API.

fiable

Enfin, l'authentification est un élément essentiel d'une application, et que vous voulez être parfaitement à l'aise en s'appuyant sur. everyauth a une longue liste de issues dont beaucoup restent ouverts et resurgissent au fil du temps. À mon avis, cela est dû à une faible couverture des tests unitaires, ce qui suggère que les interfaces internes de everyauth sont n'est pas bien défini.

en revanche, les interfaces de Passport et ses stratégies sont bien définies et largement couvertes par des tests unitaires. Questions déposée à l'encontre de Passeport ont tendance à être la plupart du temps mineur de demandes de fonctionnalités, plutôt que de bugs relatifs à l'authentification.

bien qu'étant un projet plus jeune, ce niveau de qualité suggère une solution plus mûre qui est plus facile à maintenir et la confiance aller de l'avant.

188
répondu Jared Hanson 2012-08-15 23:01:38

Passeport

  • modulaire et transparent
  • bonnes docs
  • les contributions de la communauté (du fait de sa modularité)
  • fonctionne avec tout le monde et leur chien (encore une fois, en raison de sa modularité)

Everyauth

  • longue histoire de développement, de maturité.
  • n'est plus entretenu
  • grande docs
  • fonctionne avec une large gamme de services
18
répondu Waylon Flinn 2018-08-07 02:27:09

vient de passer de everyauth à passport. Les raisons sont les suivantes.

  1. Everyauth n'est pas assez stable. La goutte d'eau a fait déborder le vase la semaine dernière, j'ai été mordu par un mystérieux problème où l'authentification facebook fonctionnerait sur local.hôte et sur l'environnement de production, mais pas dans mon environnement de test sur heroku, même avec un code et des bases de données identiques et une nouvelle application heroku. À ce moment-là, je n'avais plus de théories sur la façon d'isoler la question, de sorte que supprimer everyauth était la prochaine étape logique.
  2. la façon dont il fournit le soutien pour l'authentification standard en utilisant des justificatifs d'identité de nom d'utilisateur/mot de passe n'est pas facilement intégrée avec une approche d'application web d'une page unique.
  3. Je n'ai pas été en mesure de convaincre everyauth de travailler avec des comptes Google.
  4. le développement actif de everyauth semble en déclin.

le port était étonnamment indolore, ne prenant que quelques heures, y compris les tests manuels.

donc évidemment, je recommande d'aller pour le passeport.

16
répondu Gudlaugur Egilsson 2013-05-26 22:49:14

j'ai d'abord essayé tous Lesauths et je suis depuis allé au Passeport. Cela m'a semblé un peu plus souple, surtout. si (par exemple) j'ai besoin d'une logique différente pour différents fournisseurs. Il est également plus facile (imo) de configurer des stratégies d'auth personnalisées. D'autre part, il n'a pas les aides de vue, si celles-ci sont importantes pour vous.

4
répondu Paul 2012-08-15 19:40:14

j'utilisais Everyauth plus spécifiquement mongoose-auth. J'ai eu du mal à séparer correctement mes fichiers sans démonter le module everyauth. Passeport à mon avis est une méthode plus propre pour créer des logins. Il y a un rapport que j'ai trouvé très utile http://rckbt.me/2012/03/transitioning-from-mongoose-auth-to-passport/

2
répondu user1441287 2013-04-16 14:37:19

notez la date de ce message, il indiquera à quel point ce message est pertinent.

d'après mon expérience, Everyauth n'a pas réussi à sortir de la boîte avec son style de login de mot de passe. J'utilise express3 et je déclare mon middleware comme app.use(everyauth.middleware(app)); et il ne passait toujours pas dans le local everyauth à mon modèle. Le dernier git commit a eu lieu il y a un an et je pense que les nouveaux paquets ont tout cassé. Maintenant, je vais essayer de passeport.

1
répondu Harsh Singh 2013-04-06 19:55:58

cela répond un peu tard, mais j'ai trouvé ce fil et (après avoir entendu tous les commentaires négatifs sur Everyauth) décidé d'utiliser Passeport ... et puis détesté. Il était opaque, ne fonctionnait que comme middleware (vous ne pouviez pas vous authentifier à partir D'un terminal GraphQL, par exemple), et j'ai frappé plus d'un bug difficile à déboguer (par exemple. Comment puis-je avoir deux sessions Express? ).

alors j'ai cherché et j'ai trouvé https://github.com/jed/authom . Pour mes besoins c'est une bien meilleure bibliothèque! C'est un peu plus bas que les deux autres bibliothèques, donc vous devez faire des choses comme mettre l'utilisateur dans la session vous-même ... mais ce n'est qu'une ligne, donc ce n'est pas grand-chose.

plus important encore, sa conception vous donne beaucoup plus de contrôle, ce qui rend facile de mettre en œuvre votre autorisation de la façon dont vous voulez et pas la façon dont Passeport prévu. De plus, comparé au Passeport, c'est beaucoup plus simple et plus facile à apprendre.

1
répondu machineghost 2018-02-14 02:21:50