Everyauth बनाम पासपोर्ट.जेएस?


122

Everyauth और Passport.js में बहुत समान फीचर सेट हैं। दोनों के बीच कुछ सकारात्मक और नकारात्मक तुलनाएं हैं जो मुझे एक दूसरे पर उपयोग करना चाहते हैं?


ग्रांट का उपयोग करने के लिए एक और विकल्प है - यह केवल अगर आप OAuth मिडलवेयर की तलाश कर रहे हैं। यह सैकड़ों प्रदाताओं का समर्थन करता है और यह सीधे JSON डेटा संरचना के माध्यम से कॉन्फ़िगर किया गया है।
सिमो

जवाबों:


191

पासपोर्ट के डेवलपर के रूप में, मेरे दो सेंट के साथ चुइंग ।

पासपोर्ट विकसित करने से पहले, मैंने हर आधार का मूल्यांकन किया और निर्धारित किया कि यह मेरी आवश्यकताओं को पूरा नहीं करता है। इसलिए, मैं एक अलग समाधान लागू करने के बारे में निर्धारित करता हूं जो होगा। मैं जिन प्रमुख बिंदुओं को संबोधित करना चाहता था वे हैं:

मुहावरेदार Node.js

कॉलबैक और क्लोजर का उपयोग करने के नोड के दृष्टिकोण के बजाय, हरहाथ वादों का व्यापक उपयोग करता है। वादे async प्रोग्रामिंग के लिए एक वैकल्पिक दृष्टिकोण है। कुछ उच्च-स्तरीय स्थितियों में उपयोगी होते हुए, मैं अपने आवेदन पर इस विकल्प को मजबूर करने के लिए एक प्रमाणीकरण पुस्तकालय के साथ सहज नहीं था।

इसके अलावा, मुझे लगता है कि कॉलबैक और क्लोजर पैदावार का उचित उपयोग, अच्छी तरह से आर्किटेक्चर (लगभग कार्यात्मक शैली) कोड है। नोड की अधिकांश शक्ति स्वयं इस तथ्य से आती है, और पासपोर्ट सूट का अनुसरण करता है।

मॉड्यूलर

पासपोर्ट कोर मॉड्यूल और विभिन्न प्रमाणीकरण तंत्रों के बीच चिंताओं के स्पष्ट पृथक्करण को परिभाषित करने के लिए एक रणनीति डिजाइन पैटर्न नियुक्त करता है। इसके कई लाभ हैं, जिनमें छोटे समग्र कोड आकार और अच्छी तरह से परिभाषित और परीक्षण योग्य इंटरफेस शामिल हैं।

एक बुनियादी चित्रण के लिए, दौड़ने $ npm install passportऔर के बीच के अंतर की तुलना करें $ npm install everyauth। पासपोर्ट आपको केवल उन्हीं निर्भरताओं का उपयोग करके अपने एप्लिकेशन को तैयार करने देता है, जिनकी आपको वास्तव में आवश्यकता होती है।

इस मॉड्यूलर वास्तुकला ने खुद को अनुकूल बनाने में मदद की है, एक ऐसे समुदाय को सुविधा प्रदान की है जिसने कई प्रकार के प्रमाणीकरण तंत्रों के लिए समर्थन लागू किया है, जिसमें ओपनआईडी, ओथ, ब्राउज़रआईडी, एसएएमएल, आदि शामिल हैं।

लचीला

कनेक्ट और एक्सप्रेस द्वारा स्थापित सम्मेलन का उपयोग करते हुए, पासपोर्ट सिर्फ मिडलवेयर हैfn(req, res, next)

इसका मतलब यह है कि कोई आश्चर्य की बात नहीं है , जैसा कि आप परिभाषित करते हैं कि आप अपने मार्गों को कहां चाहते हैं और जब आप प्रमाणीकरण का उपयोग करना चाहते हैं। एक विशिष्ट ढांचे पर भी निर्भरता नहीं हैं। लोग सफलतापूर्वक जैसे अन्य चौखटे के साथ पासपोर्ट का उपयोग कर रहे Flatiron

इसके विपरीत, everyauth में कोई भी मॉड्यूल आपके एप्लिकेशन में रूट सम्मिलित कर सकता है। यह डिबगिंग को मुश्किल बना सकता है, क्योंकि यह गैर-स्पष्ट है कि किसी मार्ग को कैसे भेजा जाएगा और एक विशिष्ट ढांचे के साथ तंग युग्मन की ओर जाता है।

एक्सप्रेस द्वारा परिभाषित के रूप में पासपोर्ट भी एक तरह से त्रुटियां है, जो पूरी तरह से पारंपरिक है, त्रुटि से निपटने वाले मिडलवेयर के बगल में है ।

इसके विपरीत, everyauth के अपने स्वयं के सम्मेलन हैं, जो समस्या स्थान को अच्छी तरह से फिट नहीं करते हैं, जिससे # 36 जैसे लंबे समय से खुले मुद्दे हैं

एपीआई प्रमाणीकरण

किसी भी प्रमाणीकरण पुस्तकालय की बड़ी उपलब्धि एपीआई प्रमाणीकरण को वेब आधारित संकेत के रूप में सुरुचिपूर्ण ढंग से संभालने की क्षमता है।

मैं इस बिंदु पर ज्यादा विस्तार नहीं करूंगा। हालाँकि, मैं लोगों को पासपोर्ट के भाई-बहनों, OAuthorize और OAuth2orize को देखने के लिए प्रोत्साहित करता हूँ । इन परियोजनाओं का उपयोग करके, आप HTML / सत्र-आधारित वेब ऐप और एपीआई क्लाइंट दोनों के लिए "पूर्ण-स्टैक" प्रमाणीकरण को लागू कर सकते हैं।

विश्वसनीय

अंत में, प्रमाणीकरण एक आवेदन का एक महत्वपूर्ण घटक है, और आप जिस पर पूरी तरह से निर्भर रहना चाहते हैं। everyauth के पास उन मुद्दों की एक लंबी सूची है जिनमें से कई खुले हैं और समय के साथ पुनरुत्थान करते हैं। मेरी राय में, यह कम इकाई परीक्षण कवरेज के कारण है, जो खुद ही बताता है कि हर ऑर्थ में आंतरिक इंटरफेस उपयुक्त रूप से परिभाषित नहीं हैं।

इसके विपरीत, पासपोर्ट के इंटरफेस और इसकी रणनीतियों को अच्छी तरह से परिभाषित किया गया है और यूनिट परीक्षणों द्वारा बड़े पैमाने पर कवर किया गया है। प्रमाणीकरण से संबंधित बग के बजाय पासपोर्ट के खिलाफ दायर मुद्दे ज्यादातर मामूली फीचर अनुरोध होते हैं।

एक छोटी परियोजना होने के बावजूद, गुणवत्ता का यह स्तर अधिक परिपक्व समाधान का सुझाव देता है जो आगे बनाए रखने और विश्वास करने में आसान है।


9
@EhevuTov> इस उत्तर को चुनें, यह मेरी तुलना में बहुत अधिक पूर्ण है और मैं उनकी टिप्पणियों से 100% सहमत हूं।
पॉल

1
@ जारेड हैन्सन: क्या आपके पास कोई उदाहरण है कि कैसे RESTfull के साथ पासपोर्ट का उपयोग करें?
नौर

5
मैं नहीं देखता कि वादे वास्तव में वेनिला कॉलबैक शैली के उद्धृत लाभों को कैसे बदलते हैं। आप बहुत कम परिदृश्यों में कम कोड के साथ एक ही काम कर रहे हैं जहां घटनाओं की एक रैखिक श्रृंखला अतिरिक्त कॉलबैक को ट्रिगर करती है।
एरिक रेपेन

1
@ErikReppen से सहमत हैं कि इस तुलना में वादे अप्रासंगिक हैं।
vicneanschi

विडंबना यह है कि, लेकिन पासपोर्ट में अभी बहुत अधिक मुद्दे हैं: github.com/jaredhanson/passport/issues (273 बनाम 148 प्रत्येक के लिए)।
एंटोन बेसोनोव

19

पासपोर्ट

  • मॉड्यूलर और पारदर्शी
  • अच्छा डॉक्स
  • सामुदायिक योगदान (इसके कारण प्रतिरूपकता)
  • हर किसी के साथ काम करता है और उनके कुत्ते (फिर से, यह प्रतिरूपकता के कारण)

Everyauth

  • लंबे विकास के इतिहास, परिपक्व।
  • अब कायम नहीं है
  • महान डॉक्स
  • सेवाओं की एक विस्तृत श्रृंखला के साथ काम करता है

1
Everyauth अब सक्रिय रूप से बनाए नहीं रखा गया है।
यशहर

1
@YharharF मुझे बताने के लिए धन्यवाद। उत्तर अपडेट किया गया है
वेलोन फ्लिन

शीर्षासन करते हैं कि पासपोर्ट अब बनाए रखने के लिए नहीं लगता है। अंतिम कार्यात्मक प्रतिबद्ध 2 साल पहले किया गया था और 300 खुले मुद्दे हैं।
उड़ी

16

बस हर ऑहाथ से पासपोर्ट में बदलना समाप्त हो गया। कारण निम्नलिखित थे।

  1. Everyauth पर्याप्त स्थिर नहीं है। अंतिम पुआल पिछले हफ्ते मुझे एक रहस्यमय मुद्दे से काट लिया गया था, जहां फेसबुक प्रमाणीकरण स्थानीय.होस्ट और उत्पादन परिवेश पर काम करेगा, लेकिन समान कोड और डेटाबेस और यहां तक ​​कि एक नए हरोकू ऐप के उदाहरण के साथ, हरोकू पर मेरे परीक्षण वातावरण में नहीं। उस समय मैं इस मुद्दे से अलग हो गया कि कैसे इस मुद्दे को अलग किया जाए, इसलिए हर कदम को हटाना अगला अगला कदम था।
  2. जिस तरह से यह उपयोगकर्ता नाम / पासवर्ड क्रेडेंशियल्स का उपयोग करके मानक प्रमाणीकरण के लिए समर्थन प्रदान करता है, वह एक पेज वेब ऐप दृष्टिकोण के साथ आसानी से एकीकृत नहीं होता है।
  3. Google खातों के साथ काम करने में मैं असमर्थ था।
  4. हर मौक़े पर सक्रिय विकास घट रहा है।

बंदरगाह आश्चर्यजनक रूप से पीड़ारहित था, केवल कुछ ही घंटे लगते थे, जिसमें मैनुअल परीक्षण भी शामिल था।

तो जाहिर है, मैं पासपोर्ट के लिए जाने की सलाह देता हूं।


सच्ची कहानी के लिए धन्यवाद हालांकि अंतिम स्ट्रॉ स्पष्ट नहीं है।
एंड्रयू_ 1510

4

मैंने पहले एराउथ को आज़माया और तब से पासपोर्ट के लिए गया। इसने मुझे कुछ हद तक अधिक लचीला, एस्प के रूप में मारा। अगर (उदाहरण के लिए) मुझे अलग-अलग प्रदाताओं के लिए अलग-अलग तर्क चाहिए। कस्टम कस्टम रणनीतियों को कॉन्फ़िगर करने के लिए यह आसान (imo) भी बनाता है। दूसरी ओर, यह देखने वालों के पास नहीं है, यदि वे आपके लिए महत्वपूर्ण हैं।


मैंने देखा कि Passport.js कहता है कि यह चिंताओं को विभाजित करता है और मुझे आश्चर्य होता है कि अगर हरहाथ इसी तरह बनाया गया है।
एहेवुतोव

2

मैं Everyauth का उपयोग अधिक विशेष रूप से मैंगोज़-ऑर्ट के लिए करता था। मैंने पाया कि हर फाइल को सही तरीके से विभाजित करना मुश्किल है। मेरी राय में पासपोर्ट लॉगिन बनाने के लिए एक क्लीनर विधि है। वहाँ लिखा है कि मैं बहुत उपयोगी पाया http://rckbt.me/2012/03/transitioning-from-mongoose-auth-to-passport/


2

यह थोड़ा देर से जवाब देता है, लेकिन मुझे यह धागा मिला और (Everyauth के बारे में सभी नकारात्मक प्रतिक्रिया सुनने के बाद) पासपोर्ट का उपयोग करने का फैसला किया ... और फिर उससे नफरत की। यह अपारदर्शी था, केवल मिडलवेयर के रूप में काम करता था (आप उदाहरण के लिए, ग्राफक्यूएल एंडपॉइंट से प्रमाणित नहीं कर सकते थे), और मैंने बग को डीबग करने के लिए एक से अधिक हिट किया (जैसे कि मेरे पास दो एक्सप्रेस सत्र कैसे हैं? )।

तो मैं देख रहा था और https://github.com/jed/authom पाया । मेरी जरूरतों के लिए यह एक बेहतर पुस्तकालय है! यह अन्य दो पुस्तकालयों की तुलना में थोड़ा निचला स्तर है, इसलिए आपको उपयोगकर्ता को सत्र में खुद को डालने जैसी चीजें करनी होंगी ... लेकिन यह केवल एक पंक्ति है, इसलिए यह वास्तव में कोई बड़ी बात नहीं है।

इससे भी महत्वपूर्ण बात यह है कि इसका डिज़ाइन आपको बहुत अधिक नियंत्रण देता है, जिससे आपके प्राधिकरण को लागू करने में आसानी होती है, जिस तरह से आप चाहते हैं और जिस तरह से पासपोर्ट का इरादा नहीं है। साथ ही, पासपोर्ट की तुलना में यह बहुत सरल और सीखने में आसान है।


1

इस पोस्ट की तारीख पर ध्यान दें, यह इंगित करेगा कि यह पोस्ट कितनी प्रासंगिक है।

मेरे अनुभव में, Everyauth ने पासवर्ड लॉगिन शैली के साथ बॉक्स से बाहर काम नहीं किया। मैं एक्सप्रेस 3 का उपयोग कर रहा हूं और मैं अपने मिडलवेयर को इस तरह घोषित करता हूं app.use(everyauth.middleware(app));और यह अभी भी मेरे टेम्पलेट के लिए हरहाथ स्थानीय में पारित नहीं हो रहा था। एक साल पहले आखिरी जीट कमिटमेंट था और मुझे लगता है कि नए पैकेजों ने हर तोड़ दिया है। अब मैं पासपोर्ट की कोशिश करने जा रहा हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.