Everyauth ve Passport.js çok benzer özellik kümelerine sahip görünüyor. İkisi arasındaki olumlu ve olumsuz karşılaştırmalardan bazıları, birini diğerinin üzerinde kullanmak istememe neden olur?
Everyauth ve Passport.js çok benzer özellik kümelerine sahip görünüyor. İkisi arasındaki olumlu ve olumsuz karşılaştırmalardan bazıları, birini diğerinin üzerinde kullanmak istememe neden olur?
Yanıtlar:
Passport'un geliştiricisi olarak iki sentimle uğraşıyorum .
Passport'u geliştirmeden önce, her şeyi değerlendirdim ve gereksinimlerimi karşılamadığını belirledim. Bu yüzden farklı bir çözüm uygulamaya koydum. Ele almak istediğim ana noktalar:
Deyimsel Node.js
everyauth, Node'un geri aramaları ve kapatmaları kullanma yaklaşımı yerine vaatleri kapsamlı bir şekilde kullanır. Sözler, eşzamansız programlamaya alternatif bir yaklaşımdır. Bazı üst düzey durumlarda yararlı olsa da, başvuruma bu seçimi zorlayan bir kimlik doğrulama kitaplığından memnun değildim.
Dahası, geri çağırmaların ve kapatmaların doğru kullanımının kısa, iyi tasarlanmış (neredeyse işlevsel tarz) kodlar sağladığını gördüm. Düğümün gücünün büyük bir kısmı bu olgudan gelir ve Passport da bunu takip eder.
Modüler
Passport, çekirdek modül ile çeşitli kimlik doğrulama mekanizmaları arasındaki endişelerin net bir şekilde ayrılmasını tanımlamak için bir strateji tasarım modeli kullanır. Bunun, daha küçük genel kod boyutu ve iyi tanımlanmış ve test edilebilir arabirimler dahil olmak üzere bir dizi avantajı vardır.
Temel bir örnek için, koşmak $ npm install passport
ve koşmak arasındaki farkı karşılaştırın $ npm install everyauth
. Passport, uygulamanızı yalnızca gerçekten ihtiyacınız olan bağımlılıkları kullanarak oluşturmanıza olanak tanır.
Bu modüler mimari, OpenID, OAuth, BrowserID, SAML, vb. Dahil olmak üzere çok çeşitli kimlik doğrulama mekanizmaları için destek uygulayan bir topluluğu kolaylaştırarak uyarlanabilir olduğunu kanıtlamıştır.
Esnek
Passport, Connect ve Express tarafından oluşturulan konvansiyonu kullanan bir ara yazılımdırfn(req, res, next)
.
Bu , rotalarınızı nerede istediğinizi ve kimlik doğrulamasını ne zaman kullanmak istediğinizi tanımladığınız için sürpriz olmayacağı anlamına gelir . Ayrıca belirli bir çerçeveye bağımlılık yoktur. İnsanlar Passport'u Flatiron gibi diğer çerçevelerle başarıyla kullanıyor
Buna karşılık, everyauth'taki herhangi bir modül uygulamanıza yol ekleyebilir. Bir yolun nasıl gönderileceği açık olmadığından ve belirli bir çerçeve ile sıkı bir bağlantıya yol açtığından bu, hata ayıklamayı zorlaştırabilir.
Passport, Express tarafından tanımlanan hata işleme ara yazılımlarının yanında, tamamen geleneksel bir şekilde de hata yapar .
Buna karşılık, everyauth'un sorun alanına tam olarak uymayan ve # 36 gibi uzun süredir devam eden açık sorunlara neden olan kendi kuralları vardır.
API Kimlik Doğrulaması
Herhangi bir kimlik doğrulama kitaplığının taçlandıran başarısı, API kimlik doğrulamasını web tabanlı oturum açma kadar zarif bir şekilde işleme yeteneğidir.
Bu noktada fazla ayrıntıya girmeyeceğim. Ancak, insanları Passport'un kardeş projelerine, OAuthorize ve OAuth2orize'e bakmaya teşvik ediyorum . Bu projeleri kullanarak, hem HTML / oturum tabanlı web uygulamaları hem de API istemcileri için "tam yığın" kimlik doğrulaması uygulayabilirsiniz.
Dürüst
Son olarak, kimlik doğrulama, bir uygulamanın kritik bir bileşenidir ve güvenirken tamamen rahat olmak isteyebilirsiniz. everyauth uzun bir liste var konularda zamanla açık ve Resurface kalır birçoğu. Kanımca, bu düşük birim test kapsamından kaynaklanıyor ve bu da, her zaman için dahili arayüzlerin uygun şekilde tanımlanmadığını gösteriyor.
Aksine, Passport'un arayüzleri ve stratejileri iyi tanımlanmıştır ve kapsamlı bir şekilde birim testleri kapsamındadır. Passport aleyhine açılan sorunlar , kimlik doğrulamayla ilgili hatalardan ziyade çoğunlukla küçük özellik talepleri olma eğilimindedir.
Daha genç bir proje olmasına rağmen, bu kalite seviyesi, ileride sürdürülmesi ve güvenilmesi daha kolay olan daha olgun bir çözümü önerir.
Her zamankinden pasaporta geçişi yeni bitirdim. Sebepler şöyleydi.
Bağlantı noktası şaşırtıcı derecede ağrısızdı ve manuel test dahil sadece birkaç saat sürdü.
Açıkçası, pasaport için gitmenizi tavsiye ederim.
Önce Everyauth'u denedim ve o zamandan beri Passport'a gittim. Özellikle beni biraz daha esnek buldum. eğer (örneğin) farklı sağlayıcılar için farklı mantığa ihtiyacım varsa. Ayrıca, özel kimlik doğrulama stratejilerini yapılandırmayı (imo) kolaylaştırır. Öte yandan, sizin için önemliyse, görüntü yardımcılarına sahip değildir.
Everyauth'u daha spesifik olarak mongoose-auth kullanıyordum. Everyauth modülünü sökmeden dosyalarımı düzgün şekilde bölmeyi zor buldum. Bence pasaport, giriş oluşturmak için daha temiz bir yöntemdir. Çok yararlı bulduğum bir yazı var http://rckbt.me/2012/03/transitioning-from-mongoose-auth-to-passport/
Bu cevap biraz geç, ancak bu konuyu buldum ve (Everyauth hakkındaki tüm olumsuz geri bildirimleri duyduktan sonra) Passport kullanmaya karar verdim ... ve ondan nefret ettim. Opaktı, yalnızca ara yazılım olarak çalıştı (örneğin, bir GraphQL uç noktasından kimlik doğrulaması yapamazsınız) ve birden fazla hata ayıklaması zor hataya çarptım (örn. Nasıl iki Express oturumum olur? ).
Bu yüzden aramaya gittim ve https://github.com/jed/authom'u buldum . İhtiyaçlarım için burası çok daha iyi bir kütüphane! Diğer iki kitaplıktan biraz daha düşük seviyededir, bu yüzden kullanıcıyı oturuma kendiniz dahil etmek gibi şeyler yapmanız gerekir ... ama bu sadece bir satır, bu yüzden gerçekten önemli değil.
Daha da önemlisi, tasarımı size çok daha fazla kontrol sağlar ve yetkinizi Passport'un amaçladığı şekilde değil, istediğiniz şekilde uygulamanızı kolaylaştırır. Ayrıca, Passport'a kıyasla çok daha basit ve öğrenmesi daha kolay.
Bu gönderinin tarihini not edin, bu gönderinin ne kadar alakalı olduğunu gösterecektir.
Tecrübelerime göre, Everyauth şifre giriş stiliyle kutudan çıkmadı. Express3 kullanıyorum ve ara yazılımımı böyle beyan ediyorum app.use(everyauth.middleware(app));
ve yine de her zaman yerel olarak şablonuma geçmiyor. Son gitme işlemi bir yıl önceydi ve yeni paketlerin her zamankinden daha fazla bozulduğunu düşünüyorum. Şimdi pasaportu deneyeceğim.