পাসপোর্ট.জেএস বনাম এরিওথ?


122

Everyauth এবং Passport.js তে খুব একই বৈশিষ্ট্য সেট রয়েছে বলে মনে হয়। দুজনের মধ্যে কিছু ইতিবাচক এবং নেতিবাচক তুলনাগুলি কী কী আমাকে একটির অন্যটির তুলনায় ব্যবহার করতে চাইবে?


আর একটি বিকল্প হ'ল গ্রান্ট ব্যবহার করা - এটি কেবলমাত্র যদি আপনি OAuth মিডওয়্যারের সন্ধান করেন। এটি শত শত সরবরাহকারীকে সমর্থন করে এবং এটি সোজা JSON ডেটা স্ট্রাকচারের মাধ্যমে কনফিগার করা হয়েছে।
সিমো

উত্তর:


191

পাসপোর্টের বিকাশকারী হিসাবে আমার দুটি সেন্টের সাথে চিমিং ।

পাসপোর্ট বিকাশের আগে, আমি প্রত্যেকের মূল্যায়ন করেছি এবং নির্ধারণ করেছি যে এটি আমার প্রয়োজনীয়তা পূরণ করে না। সুতরাং, আমি একটি ভিন্ন সমাধান বাস্তবায়নের বিষয়ে সেট করেছি যা তা করবে। আমি যে প্রধান পয়েন্টগুলি সম্বোধন করতে চেয়েছিলাম সেগুলি হ'ল:

আইডোমেটিক নোড.জেএস

Everyauth কলব্যাক এবং ক্লোজার ব্যবহারের ক্ষেত্রে নোডের পদ্ধতির পরিবর্তে প্রতিশ্রুতির ব্যাপক ব্যবহার করে। প্রতিশ্রুতি অ্যাসিঙ্ক প্রোগ্রামিংয়ের বিকল্প পদ্ধতি approach কিছু উচ্চ-স্তরের পরিস্থিতিতে কার্যকর থাকার সময়, আমি আমার প্রয়োগের উপর এই পছন্দটি জোর করে প্রমাণীকরণ পাঠাগারটি দিয়ে স্বাচ্ছন্দ্যবোধ করি না।

তদুপরি, আমি দেখতে পাই যে কলব্যাক এবং ক্লোজারগুলির যথাযথ ব্যবহারের ফলে সংক্ষিপ্ত, ভাল আর্কিটেটেড (প্রায় কার্যকরী শৈলী) কোড পাওয়া যায়। নোডের বেশিরভাগ শক্তিই এই বাস্তবতা থেকে আসে এবং পাসপোর্টটি অনুসরণ করে।

মডুলার

মূল মডিউল এবং বিভিন্ন প্রমাণীকরণ ব্যবস্থার মধ্যে উদ্বেগের স্পষ্ট বিচ্ছিন্নতা সংজ্ঞা দেওয়ার জন্য পাসপোর্ট কৌশল কৌশল নকশার প্যাটার্ন নিয়োগ করে। এর সামগ্রিক কোডের আকার এবং ভালভাবে সংজ্ঞায়িত এবং পরীক্ষামূলক ইন্টারফেস সহ বেশ কয়েকটি সুবিধা রয়েছে।

একটি প্রাথমিক চিত্রের জন্য, চলমান $ npm install passportএবং এর মধ্যে পার্থক্যটির তুলনা করুন $ npm install everyauth। পাসপোর্ট আপনাকে কেবলমাত্র নির্ভরশীলতাগুলি ব্যবহার করে যা আপনার আসলে প্রয়োজন তা ব্যবহার করে আপনাকে অ্যাপ্লিকেশনটি তৈরি করতে দেয়।

এই মডুলার আর্কিটেকচারটি নিজেকে মানিয়ে নিতে সক্ষম প্রমাণ করেছে, এমন একটি সম্প্রদায়কে সহায়তা প্রদান করেছে যা ওপেনআইডিআইডি, ওআউথ, ব্রাউজারআইডি, এসএএমএল ইত্যাদিসহ বিভিন্ন ধরণের প্রমাণীকরণ ব্যবস্থার জন্য সমর্থন প্রয়োগ করেছে has

নমনীয়

সংযোগ এবং এক্সপ্রেস দ্বারা প্রতিষ্ঠিত কনভেনশনটি ব্যবহার করে পাসপোর্ট হ'ল মিডলওয়্যারfn(req, res, next)

এর অর্থ হ'ল কোনও আশ্চর্যের কিছু নেই , কারণ আপনি নিজের রাস্তাটি কোথায় চান এবং কখন আপনি প্রমাণীকরণ ব্যবহার করতে চান তা নির্ধারণ করে। নির্দিষ্ট কাঠামোর উপর কোনও নির্ভরতাও নেই। লোকে ফ্ল্যাটিরনের মতো অন্যান্য ফ্রেমওয়ার্কগুলির সাথে সফলভাবে পাসপোর্ট ব্যবহার করছে

বিপরীতে, অ্যালাউথের যে কোনও মডিউল আপনার অ্যাপ্লিকেশনটিতে রুটগুলি সন্নিবেশ করতে পারে। এটি ডিবাগিংকে জটিল করে তুলতে পারে, কারণ কোনও রুট কীভাবে প্রেরণ করা হবে এবং এটি একটি নির্দিষ্ট কাঠামোর সাথে আঁটসাঁট মিলনের দিকে পরিচালিত করে তা স্পষ্ট নয়।

এক্সপ্রেস দ্বারা নির্ধারিত মিডলওয়্যারকে ত্রুটি-পরিচালনা করার জন্য পরবর্তী-ইনপুট, পুরোপুরি প্রচলিত এমনভাবে পাসপোর্টও ত্রুটিযুক্ত ।

বিপরীতে, প্রত্যেকের নিজস্ব কনভেনশন রয়েছে, যা সমস্যার জায়গার সাথে যথাযথভাবে খাপ খায় না, # 36 এর মতো দীর্ঘস্থায়ী উন্মুক্ত সমস্যার কারণ ঘটায়

এপিআই প্রমাণীকরণ

যে কোনও প্রমাণীকরণের লাইব্রেরির মুকুট অর্জনটি ওয়েব-ভিত্তিক সাইন অন হিসাবে মার্জিতভাবে API প্রমাণীকরণ হ্যান্ডেল করার দক্ষতা ability

আমি এই বিষয়টিতে আরও বিস্তারিত জানাবো না। তবে আমি মানুষকে পাসপোর্টের ভাইবাল প্রকল্পগুলি, OAuthorize এবং OAuth2orize অনুসন্ধান করতে উত্সাহিত করি । এই প্রকল্পগুলি ব্যবহার করে, আপনি এইচটিএমএল / সেশন-ভিত্তিক ওয়েব অ্যাপ্লিকেশন এবং এপিআই ক্লায়েন্ট উভয়ের জন্য "ফুল-স্ট্যাক" প্রমাণীকরণ প্রয়োগ করতে পারেন।

বিশ্বাসযোগ্য

শেষ অবধি, প্রমাণীকরণ হ'ল একটি অ্যাপ্লিকেশনটির একটি গুরুত্বপূর্ণ উপাদান এবং আপনি যেটির উপর নির্ভর করতে সম্পূর্ণরূপে আরামদায়ক হতে চান। everyauth একটি দীর্ঘ তালিকা রয়েছে বিষয় যার অনেকগুলোই খোলা এবং সময়ের সাথে বাঁধানো থাকা। আমার মতে, এটি নিম্ন ইউনিট পরীক্ষার কভারেজের কারণে, যা নিজেই প্রস্তাব দেয় যে প্রত্যেকের অভ্যন্তরীণ ইন্টারফেসগুলি যথাযথভাবে সংজ্ঞায়িত করা হয়নি।

বিপরীতে, পাসপোর্টের ইন্টারফেস এবং এর কৌশলগুলি সুস্পষ্টভাবে সংজ্ঞায়িত হয় এবং ইউনিট পরীক্ষাগুলির দ্বারা ব্যাপকভাবে আচ্ছাদিত। পাসপোর্টের বিরুদ্ধে দায়ের করা সমস্যাগুলি প্রমাণীকরণ সম্পর্কিত বাগগুলির চেয়ে বেশিরভাগ ক্ষেত্রেই সামান্য বৈশিষ্ট্য অনুরোধ হয়।

অল্প বয়স্ক প্রকল্প হওয়া সত্ত্বেও, মানের এই স্তরটি আরও পরিপক্ক সমাধানের পরামর্শ দেয় যা বজায় রাখা এবং এগিয়ে যাওয়া বিশ্বাস আরও সহজ।


9
@ এহভুটোভ> এই উত্তরটি বেছে নিন, এটি আমার চেয়ে অনেক বেশি সম্পূর্ণ এবং আমি তার পর্যবেক্ষণের সাথে 100% সম্মত।
পল

1
@ জ্যারেড হ্যানসন: আরআরএসটিফুল অথের সাথে পাসপোর্ট কীভাবে ব্যবহার করবেন তার কোনও উদাহরণ আছে?
নাওর

5
আমি দেখতে পাচ্ছি না যে প্রতিশ্রুতিগুলি কীভাবে ভ্যানিলা কলব্যাক শৈলীর উদ্ধৃত সুবিধার পরিবর্তন করে change আপনি দৃশ্যে কম কোড দিয়ে একই কাজটি করছেন যেখানে ইভেন্টের একটি রৈখিক সিরিজ অতিরিক্ত কলব্যাকগুলি ট্রিগার করে।
এরিক পুনরায়

1
@ এরিকাপ্পেনের সাথে সম্মত হোন যে প্রতিশ্রুতিগুলি এই তুলনায় অপ্রাসঙ্গিক।
ভিকনান্সচি

কৌতুকজনকভাবে , তবে পাসপোর্টে এখন আরও অনেক সমস্যা রয়েছে: github.com/jaredhanson/passport/issues (273 বনাম 148 প্রত্যেকের জন্য)।
আন্তন বেসনভ

19

পাসপোর্ট

  • মডুলার এবং স্বচ্ছ
  • ভাল ডকস
  • সম্প্রদায়ের অবদান (এটি আধুনিকতার কারণে)
  • প্রত্যেকের সাথে এবং তাদের কুকুরের সাথে কাজ করে (আবার এটির মড্যুলারটির কারণে)

Everyauth

  • দীর্ঘ বিকাশের ইতিহাস, পরিপক্ক
  • আর রক্ষণাবেক্ষণ করা হয় না
  • দুর্দান্ত ডকস
  • পরিষেবা বিস্তৃত সঙ্গে কাজ করে

1
Everyauth আর সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় না।
ইয়াসারএফ

1
@ ইশারফ আমাকে জানাতে ধন্যবাদ। উত্তর আপডেট করা হয়েছে
ওয়েলন ফ্লিন

শীর্ষে যে পাসপোর্টটি আর রক্ষণাবেক্ষণ করা হয় না বলে মনে হচ্ছে। সর্বশেষ কার্যনির্বাহী প্রতিশ্রুতি 2 বছর আগে করা হয়েছিল এবং এখানে 300 টি মুক্ত সমস্যা রয়েছে।
উরি

16

সবেমাত্র পাসপোর্টে এরিয়াথ থেকে পরিবর্তন শেষ হয়েছে। কারণগুলি নিম্নলিখিত ছিল।

  1. Everyauth যথেষ্ট স্থিতিশীল নয়। চূড়ান্ত খড়টি গত সপ্তাহে আমি একটি রহস্যজনক ইস্যুতে দংশিত হয়েছিলাম যেখানে ফেসবুক প্রমাণীকরণ লোকালহোস্ট এবং উত্পাদন পরিবেশে কাজ করবে, তবে হিরকুতে আমার পরীক্ষার পরিবেশে নয়, এমনকি অভিন্ন কোড এবং ডাটাবেস এবং একটি নতুন হিরকু অ্যাপ্লিকেশন উদাহরণ রয়েছে। এই মুহুর্তে আমি ইস্যুটি কীভাবে বিচ্ছিন্ন করা যায় সে সম্পর্কে তত্ত্বের বাইরে চলে এসেছি, সুতরাং প্রত্যেক ব্যক্তিকে অপসারণ করা যৌক্তিক পরবর্তী পদক্ষেপ ছিল।
  2. এটি ব্যবহারকারীর নাম / পাসওয়ার্ড শংসাপত্রগুলি ব্যবহার করে মান প্রমাণীকরণের জন্য যেভাবে সহায়তা সরবরাহ করে তা সহজেই কোনও একক পৃষ্ঠার ওয়েব অ্যাপ্লিকেশন পদ্ধতির সাথে সংহত হয় না।
  3. আমি গুগল অ্যাকাউন্টগুলির সাথে কাজ করার জন্য প্রত্যেককে পেতে অক্ষম।
  4. Everyauth সক্রিয় বিকাশ হ্রাস উপর বলে মনে হচ্ছে।

বন্দরটি আশ্চর্যজনকভাবে বেদনাদায়ক ছিল, ম্যানুয়াল টেস্টিং সহ কয়েক ঘন্টা সময় নেয়।

স্পষ্টতই, আমি পাসপোর্টে যাওয়ার পরামর্শ দিই।


চূড়ান্ত খড় পরিষ্কার না হলেও সত্য গল্পের জন্য আপনাকে ধন্যবাদ।
অ্যান্ড্রু_1510

4

আমি প্রথমে Everyauth চেষ্টা করেছিলাম এবং তখন থেকে পাসপোর্টে চলে এসেছি। এটি আমাকে কিছুটা নমনীয় হিসাবে আঘাত করেছে, যেমন যদি (উদাহরণস্বরূপ) আমার বিভিন্ন সরবরাহকারীর জন্য আলাদা যুক্তি প্রয়োজন। এটি কাস্টম লেখার কৌশলগুলি কনফিগার করা সহজ (imo) করে। অন্যদিকে, যদি এটির জন্য আপনার কাছে গুরুত্বপূর্ণ হয় তবে এটিতে ভিউ সহায়ক নয়।


আমি লক্ষ্য করেছি যে পাসপোর্ট.জেএস বলেছে এটি উদ্বেগকে বিভক্ত করে এবং আমি আশ্চর্য হই যে প্রত্যেকে একইভাবে নির্মিত হয়েছে কিনা is
এহভুটোভ

2

আমি Everyauth আরও নির্দিষ্টভাবে ব্যবহার করতাম মঙ্গস-এথ uth Everyauth মডিউলটি না ভেঙে আমার ফাইলগুলি যথাযথভাবে বিভক্ত করা আমার পক্ষে শক্ত হয়ে গেছে। আমার মতে পাসপোর্ট লগিন তৈরির জন্য একটি ক্লিনার পদ্ধতি। একটা লেখার আপ যে আমি খুব সহায়ক পাওয়া যায় http://rckbt.me/2012/03/transitioning-from-mongoose-auth-to-passport/


2

এটি কিছুটা দেরিতে উত্তর দেয়, তবে আমি এই থ্রেডটি পেয়েছি এবং (Everyauth সম্পর্কে সমস্ত নেতিবাচক প্রতিক্রিয়া শুনে) পাসপোর্ট ব্যবহার করার সিদ্ধান্ত নিয়েছে ... এবং তারপরে এটি ঘৃণা করেছে। এটি অস্বচ্ছ ছিল, কেবল মিডলওয়্যার হিসাবে কাজ করেছিল (উদাহরণস্বরূপ, আপনি কোনও গ্রাফকিউএল এন্ডপয়েন্ট থেকে প্রমাণীকরণ করতে পারবেন না) এবং আমি বাগের ডিবাগ করতে একের বেশি আঘাত করেছি (যেমন। আমি কীভাবে দুটি এক্সপ্রেস সেশন করব? )।

তাই আমি সন্ধান করতে গিয়ে https://github.com/jed/authom খুঁজে পেয়েছি । আমার প্রয়োজনের জন্য এটি একটি আরও ভাল গ্রন্থাগার! এটি অন্য দুটি গ্রন্থাগারের তুলনায় কিছুটা নিম্ন-স্তরের, সুতরাং আপনাকে ব্যবহারকারীকে নিজেই সেশনে রাখার মতো জিনিসগুলি করতে হবে ... তবে এটি কেবল একটি লাইন তাই এটি আসলে কোনও বড় বিষয় নয়।

আরও গুরুত্বপূর্ণ বিষয় হল এটির নকশা আপনাকে অনেক বেশি নিয়ন্ত্রণ দেয় যা আপনার অনুমোদনের পদ্ধতিটি যেভাবে চান পাসপোর্টের উদ্দেশ্যে নয় সেইভাবে নয় your প্লাস, পাসপোর্টের তুলনায় এটি অনেক সহজ এবং শেখা সহজ।


1

এই পোস্টের তারিখটি নোট করুন, এটি এই পোস্টটি কতটা প্রাসঙ্গিক তা নির্দেশ করবে।

আমার অভিজ্ঞতায়, Everyauth এর পাসওয়ার্ড লগইন স্টাইল সহ বাক্সটির বাইরে কাজ করেনি। আমি এক্সপ্রেস 3 ব্যবহার করছি এবং আমি আমার মিডলওয়্যারটিকেও এর মতো ঘোষণা করি app.use(everyauth.middleware(app));এবং এটি এখনও আমার টেমপ্লেটে অ্যালাউথ লোকালটিতে যায় নি। সর্বশেষ গিট কমিট এক বছর আগে হয়েছিল এবং আমি নতুন প্যাকেজগুলি ভঙ্গ করেছি figure এখন আমি পাসপোর্ট চেষ্টা করতে যাচ্ছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.