Everyauth vs Passport.js?
Everyauth et Passport.js semblent avoir très caractéristiques similaires. Quels sont les effets positifs et négatifs des comparaisons entre les deux qui me ferait voulez utiliser l'un plutôt que l'autre?
- Une autre alternative est d'utiliser Bourse - c'est seulement si vous êtes à la recherche pour OAuth middleware. Il prend en charge des centaines de fournisseurs et qu'il est configuré via une simple structure de données JSON.
Vous devez vous connecter pour publier un commentaire.
Carillon avec mes deux cents, tant que développeur de Passeport.
Avant de développer Passeport, j'ai évalué everyauth et déterminé qu'il n'a pas à répondre à mes exigences. Donc, je passe sur la mise en œuvre d'une solution différente qui serait. Les principaux points que je voulais aborder sont:
Idiomatiques Node.js
everyauth fait un usage intensif de promesses, au lieu de Nœud de l'approche de l'utilisation des rappels et des fermetures. Les promesses sont une approche alternative à la programmation asynchrone. Bien qu'utile dans certains de haut niveau des situations, je n'étais pas à l'aise avec une bibliothèque d'authentification forçant ce choix lors de ma demande.
De plus, je trouve que la bonne utilisation de rappels et de la fermeture des rendements concis, bien conçue (presque style fonctionnel) du code. Une grande partie de la puissance du Nœud lui-même vient de ce fait, et le Passeport suit en.
Modulaire
Passeport emploie une stratégie de modèle de conception pour définir clairement la séparation des préoccupations entre le module de base et les différents mécanismes d'authentification. Cela a un certain nombre d'avantages, y compris la diminution globale de la taille du code et bien défini et vérifiables interfaces.
De base de l'illustration, de comparer la différence entre l'exécution de
$ npm install passport
et$ npm install everyauth
. Passeport vous permet de créer votre application en utilisant uniquement les dépendances que vous avez réellement besoin.Cette architecture modulaire a prouvé lui-même adaptable, pour faciliter une communauté qui a pris en charge une large variété de mécanismes d'authentification, y compris OpenID, OAuth, BrowserID, SAML, etc.
Flexible
Passeport est juste middleware, à l'aide de la
fn(req, res, next)
de convention établi par Connect et Express.Cela signifie qu'il y a pas de surprises, comme de définir où vous voulez que vos routes et lorsque vous souhaitez utiliser l'authentification. Il n'y a pas de dépendances sur un cadre précis. Les gens sont avec succès à l'aide de Passeport avec d'autres cadres tels que Flatiron
En revanche, n'importe quel module dans everyauth pouvez insérer des routes dans votre application. Cela peut rendre difficile de débogage, puisque ce n'est pas évident de savoir comment un itinéraire va être distribué et conduit à un couplage étroit avec un cadre précis.
Passeport aussi les erreurs d'une manière qui est tout à fait classique, prochaine-ment à gestion des erreurs middleware tels que définis par l'Express.
En revanche, everyauth a ses propres conventions, qui ne tiennent pas le problème de l'espace, entraînant ainsi de longue date, les problèmes tels que la #36
API d'Authentification
Le couronnement de toute bibliothèque d'authentification est sa capacité à gérer des API d'authentification avec autant d'élégance que basé sur le web vous connecter.
Je ne m'étendrai pas beaucoup sur ce point. Cependant, j'encourage les gens à regarder dans du Passeport, de frère, de projets, OAuthorize et OAuth2orize. À l'aide de ces projets, vous pouvez mettre en œuvre "full-stack" de l'authentification, pour le HTML/session basée sur des applications web et des API clients.
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 questions dont beaucoup restent ouverts et le resurfaçage au fil du temps. À mon avis, cela est dû à la faible couverture de tests unitaires, qui lui-même suggère que les interfaces internes dans everyauth ne sont pas suffisamment définies.
En revanche, Passeport, interfaces et de ses stratégies sont bien définis et largement couvert par les 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.
En dépit d'être un jeune projet, ce niveau de qualité, suggère une plus grande maturité de la solution qui est plus facile à maintenir et la confiance à l'avenir.
Passeport
Everyauth
Vient de finir de changer de everyauth de passeport. Les raisons sont les suivantes.
Le port a été étonnamment indolores, prenant seulement quelques heures, y compris un test manuel.
Alors, évidemment, je vous recommande d'opter pour un passeport.
J'ai essayé Everyauth en premier et ont depuis disparu de Passeport. Il m'a frappé comme un peu plus flexible, esp. si (par exemple) j'ai besoin d'une logique différente pour différents fournisseurs. Il rend également plus facile (omi) pour configurer personnalisé auth stratégies. D'autre part, il n'a pas les aides de vue, si celles-ci sont importantes pour vous.
J'ai l'habitude d'utiliser Everyauth plus précisément de la mangouste-auth. J'ai trouvé difficile de séparer mes fichiers correctement sans démontage de la everyauth module. Passeport à mon avis, est une méthode plus propre pour la création de connexions. Il y a une écriture que j'ai trouvé très utile http://rckbt.me/2012/03/transitioning-from-mongoose-auth-to-passport/
Cela répond un peu tard, mais j'ai trouvé ce fil et (après avoir entendu tous les commentaires négatifs à propos de Everyauth) a décidé d'utiliser le Passeport ... et puis détesté. Il était opaque, seulement travaillé en tant que middleware (on ne pouvait pas s'authentifier à partir d'un GraphQL point de terminaison, par exemple), et j'ai touché plus d'un difficile à déboguer bug (eg. Comment puis-je avoir deux Express sessions?).
Et j'ai cherché et trouvé https://github.com/jed/authom. Pour mes besoins c'est une bien meilleure bibliothèque! C'est un peu plus faible niveau que les deux autres bibliothèques, de sorte que vous avez à faire des choses comme mettre l'utilisateur dans la session vous-même ... mais c'est une seule ligne donc, c'est vraiment pas une grosse affaire.
Plus important encore, sur sa conception vous donne beaucoup plus de contrôle, le rendant facile à mettre en œuvre votre autorisation de la manière que vous voulez et pas à la manière de Passeport prévu. De Plus, comparativement à un Passeport, c'est beaucoup plus simple et plus facile à apprendre.
Note la date de ce post, il va vous indiquer la pertinence de ce post est.
Dans mon expérience, Everyauth ne pas travailler hors de la boîte avec son mot de passe de connexion de style. Je suis à l'aide de express3 et je déclare mon middleware comme
app.use(everyauth.middleware(app));
et il n'était toujours pas en passant dans le everyauth local pour mon modèle. Le dernier git commit il y a un an et je l'ai trouver de nouveaux paquets ont brisé everyauth. Maintenant, je vais essayer de passeport.