Everyauth এবং Passport.js তে খুব একই বৈশিষ্ট্য সেট রয়েছে বলে মনে হয়। দুজনের মধ্যে কিছু ইতিবাচক এবং নেতিবাচক তুলনাগুলি কী কী আমাকে একটির অন্যটির তুলনায় ব্যবহার করতে চাইবে?
Everyauth এবং Passport.js তে খুব একই বৈশিষ্ট্য সেট রয়েছে বলে মনে হয়। দুজনের মধ্যে কিছু ইতিবাচক এবং নেতিবাচক তুলনাগুলি কী কী আমাকে একটির অন্যটির তুলনায় ব্যবহার করতে চাইবে?
উত্তর:
পাসপোর্টের বিকাশকারী হিসাবে আমার দুটি সেন্টের সাথে চিমিং ।
পাসপোর্ট বিকাশের আগে, আমি প্রত্যেকের মূল্যায়ন করেছি এবং নির্ধারণ করেছি যে এটি আমার প্রয়োজনীয়তা পূরণ করে না। সুতরাং, আমি একটি ভিন্ন সমাধান বাস্তবায়নের বিষয়ে সেট করেছি যা তা করবে। আমি যে প্রধান পয়েন্টগুলি সম্বোধন করতে চেয়েছিলাম সেগুলি হ'ল:
আইডোমেটিক নোড.জেএস
Everyauth কলব্যাক এবং ক্লোজার ব্যবহারের ক্ষেত্রে নোডের পদ্ধতির পরিবর্তে প্রতিশ্রুতির ব্যাপক ব্যবহার করে। প্রতিশ্রুতি অ্যাসিঙ্ক প্রোগ্রামিংয়ের বিকল্প পদ্ধতি approach কিছু উচ্চ-স্তরের পরিস্থিতিতে কার্যকর থাকার সময়, আমি আমার প্রয়োগের উপর এই পছন্দটি জোর করে প্রমাণীকরণ পাঠাগারটি দিয়ে স্বাচ্ছন্দ্যবোধ করি না।
তদুপরি, আমি দেখতে পাই যে কলব্যাক এবং ক্লোজারগুলির যথাযথ ব্যবহারের ফলে সংক্ষিপ্ত, ভাল আর্কিটেটেড (প্রায় কার্যকরী শৈলী) কোড পাওয়া যায়। নোডের বেশিরভাগ শক্তিই এই বাস্তবতা থেকে আসে এবং পাসপোর্টটি অনুসরণ করে।
মডুলার
মূল মডিউল এবং বিভিন্ন প্রমাণীকরণ ব্যবস্থার মধ্যে উদ্বেগের স্পষ্ট বিচ্ছিন্নতা সংজ্ঞা দেওয়ার জন্য পাসপোর্ট কৌশল কৌশল নকশার প্যাটার্ন নিয়োগ করে। এর সামগ্রিক কোডের আকার এবং ভালভাবে সংজ্ঞায়িত এবং পরীক্ষামূলক ইন্টারফেস সহ বেশ কয়েকটি সুবিধা রয়েছে।
একটি প্রাথমিক চিত্রের জন্য, চলমান $ npm install passport
এবং এর মধ্যে পার্থক্যটির তুলনা করুন $ npm install everyauth
। পাসপোর্ট আপনাকে কেবলমাত্র নির্ভরশীলতাগুলি ব্যবহার করে যা আপনার আসলে প্রয়োজন তা ব্যবহার করে আপনাকে অ্যাপ্লিকেশনটি তৈরি করতে দেয়।
এই মডুলার আর্কিটেকচারটি নিজেকে মানিয়ে নিতে সক্ষম প্রমাণ করেছে, এমন একটি সম্প্রদায়কে সহায়তা প্রদান করেছে যা ওপেনআইডিআইডি, ওআউথ, ব্রাউজারআইডি, এসএএমএল ইত্যাদিসহ বিভিন্ন ধরণের প্রমাণীকরণ ব্যবস্থার জন্য সমর্থন প্রয়োগ করেছে has
নমনীয়
সংযোগ এবং এক্সপ্রেস দ্বারা প্রতিষ্ঠিত কনভেনশনটি ব্যবহার করে পাসপোর্ট হ'ল মিডলওয়্যারfn(req, res, next)
।
এর অর্থ হ'ল কোনও আশ্চর্যের কিছু নেই , কারণ আপনি নিজের রাস্তাটি কোথায় চান এবং কখন আপনি প্রমাণীকরণ ব্যবহার করতে চান তা নির্ধারণ করে। নির্দিষ্ট কাঠামোর উপর কোনও নির্ভরতাও নেই। লোকে ফ্ল্যাটিরনের মতো অন্যান্য ফ্রেমওয়ার্কগুলির সাথে সফলভাবে পাসপোর্ট ব্যবহার করছে
বিপরীতে, অ্যালাউথের যে কোনও মডিউল আপনার অ্যাপ্লিকেশনটিতে রুটগুলি সন্নিবেশ করতে পারে। এটি ডিবাগিংকে জটিল করে তুলতে পারে, কারণ কোনও রুট কীভাবে প্রেরণ করা হবে এবং এটি একটি নির্দিষ্ট কাঠামোর সাথে আঁটসাঁট মিলনের দিকে পরিচালিত করে তা স্পষ্ট নয়।
এক্সপ্রেস দ্বারা নির্ধারিত মিডলওয়্যারকে ত্রুটি-পরিচালনা করার জন্য পরবর্তী-ইনপুট, পুরোপুরি প্রচলিত এমনভাবে পাসপোর্টও ত্রুটিযুক্ত ।
বিপরীতে, প্রত্যেকের নিজস্ব কনভেনশন রয়েছে, যা সমস্যার জায়গার সাথে যথাযথভাবে খাপ খায় না, # 36 এর মতো দীর্ঘস্থায়ী উন্মুক্ত সমস্যার কারণ ঘটায়
এপিআই প্রমাণীকরণ
যে কোনও প্রমাণীকরণের লাইব্রেরির মুকুট অর্জনটি ওয়েব-ভিত্তিক সাইন অন হিসাবে মার্জিতভাবে API প্রমাণীকরণ হ্যান্ডেল করার দক্ষতা ability
আমি এই বিষয়টিতে আরও বিস্তারিত জানাবো না। তবে আমি মানুষকে পাসপোর্টের ভাইবাল প্রকল্পগুলি, OAuthorize এবং OAuth2orize অনুসন্ধান করতে উত্সাহিত করি । এই প্রকল্পগুলি ব্যবহার করে, আপনি এইচটিএমএল / সেশন-ভিত্তিক ওয়েব অ্যাপ্লিকেশন এবং এপিআই ক্লায়েন্ট উভয়ের জন্য "ফুল-স্ট্যাক" প্রমাণীকরণ প্রয়োগ করতে পারেন।
বিশ্বাসযোগ্য
শেষ অবধি, প্রমাণীকরণ হ'ল একটি অ্যাপ্লিকেশনটির একটি গুরুত্বপূর্ণ উপাদান এবং আপনি যেটির উপর নির্ভর করতে সম্পূর্ণরূপে আরামদায়ক হতে চান। everyauth একটি দীর্ঘ তালিকা রয়েছে বিষয় যার অনেকগুলোই খোলা এবং সময়ের সাথে বাঁধানো থাকা। আমার মতে, এটি নিম্ন ইউনিট পরীক্ষার কভারেজের কারণে, যা নিজেই প্রস্তাব দেয় যে প্রত্যেকের অভ্যন্তরীণ ইন্টারফেসগুলি যথাযথভাবে সংজ্ঞায়িত করা হয়নি।
বিপরীতে, পাসপোর্টের ইন্টারফেস এবং এর কৌশলগুলি সুস্পষ্টভাবে সংজ্ঞায়িত হয় এবং ইউনিট পরীক্ষাগুলির দ্বারা ব্যাপকভাবে আচ্ছাদিত। পাসপোর্টের বিরুদ্ধে দায়ের করা সমস্যাগুলি প্রমাণীকরণ সম্পর্কিত বাগগুলির চেয়ে বেশিরভাগ ক্ষেত্রেই সামান্য বৈশিষ্ট্য অনুরোধ হয়।
অল্প বয়স্ক প্রকল্প হওয়া সত্ত্বেও, মানের এই স্তরটি আরও পরিপক্ক সমাধানের পরামর্শ দেয় যা বজায় রাখা এবং এগিয়ে যাওয়া বিশ্বাস আরও সহজ।
সবেমাত্র পাসপোর্টে এরিয়াথ থেকে পরিবর্তন শেষ হয়েছে। কারণগুলি নিম্নলিখিত ছিল।
বন্দরটি আশ্চর্যজনকভাবে বেদনাদায়ক ছিল, ম্যানুয়াল টেস্টিং সহ কয়েক ঘন্টা সময় নেয়।
স্পষ্টতই, আমি পাসপোর্টে যাওয়ার পরামর্শ দিই।
আমি প্রথমে Everyauth চেষ্টা করেছিলাম এবং তখন থেকে পাসপোর্টে চলে এসেছি। এটি আমাকে কিছুটা নমনীয় হিসাবে আঘাত করেছে, যেমন যদি (উদাহরণস্বরূপ) আমার বিভিন্ন সরবরাহকারীর জন্য আলাদা যুক্তি প্রয়োজন। এটি কাস্টম লেখার কৌশলগুলি কনফিগার করা সহজ (imo) করে। অন্যদিকে, যদি এটির জন্য আপনার কাছে গুরুত্বপূর্ণ হয় তবে এটিতে ভিউ সহায়ক নয়।
আমি Everyauth আরও নির্দিষ্টভাবে ব্যবহার করতাম মঙ্গস-এথ uth Everyauth মডিউলটি না ভেঙে আমার ফাইলগুলি যথাযথভাবে বিভক্ত করা আমার পক্ষে শক্ত হয়ে গেছে। আমার মতে পাসপোর্ট লগিন তৈরির জন্য একটি ক্লিনার পদ্ধতি। একটা লেখার আপ যে আমি খুব সহায়ক পাওয়া যায় http://rckbt.me/2012/03/transitioning-from-mongoose-auth-to-passport/
এটি কিছুটা দেরিতে উত্তর দেয়, তবে আমি এই থ্রেডটি পেয়েছি এবং (Everyauth সম্পর্কে সমস্ত নেতিবাচক প্রতিক্রিয়া শুনে) পাসপোর্ট ব্যবহার করার সিদ্ধান্ত নিয়েছে ... এবং তারপরে এটি ঘৃণা করেছে। এটি অস্বচ্ছ ছিল, কেবল মিডলওয়্যার হিসাবে কাজ করেছিল (উদাহরণস্বরূপ, আপনি কোনও গ্রাফকিউএল এন্ডপয়েন্ট থেকে প্রমাণীকরণ করতে পারবেন না) এবং আমি বাগের ডিবাগ করতে একের বেশি আঘাত করেছি (যেমন। আমি কীভাবে দুটি এক্সপ্রেস সেশন করব? )।
তাই আমি সন্ধান করতে গিয়ে https://github.com/jed/authom খুঁজে পেয়েছি । আমার প্রয়োজনের জন্য এটি একটি আরও ভাল গ্রন্থাগার! এটি অন্য দুটি গ্রন্থাগারের তুলনায় কিছুটা নিম্ন-স্তরের, সুতরাং আপনাকে ব্যবহারকারীকে নিজেই সেশনে রাখার মতো জিনিসগুলি করতে হবে ... তবে এটি কেবল একটি লাইন তাই এটি আসলে কোনও বড় বিষয় নয়।
আরও গুরুত্বপূর্ণ বিষয় হল এটির নকশা আপনাকে অনেক বেশি নিয়ন্ত্রণ দেয় যা আপনার অনুমোদনের পদ্ধতিটি যেভাবে চান পাসপোর্টের উদ্দেশ্যে নয় সেইভাবে নয় your প্লাস, পাসপোর্টের তুলনায় এটি অনেক সহজ এবং শেখা সহজ।
এই পোস্টের তারিখটি নোট করুন, এটি এই পোস্টটি কতটা প্রাসঙ্গিক তা নির্দেশ করবে।
আমার অভিজ্ঞতায়, Everyauth এর পাসওয়ার্ড লগইন স্টাইল সহ বাক্সটির বাইরে কাজ করেনি। আমি এক্সপ্রেস 3 ব্যবহার করছি এবং আমি আমার মিডলওয়্যারটিকেও এর মতো ঘোষণা করি app.use(everyauth.middleware(app));
এবং এটি এখনও আমার টেমপ্লেটে অ্যালাউথ লোকালটিতে যায় নি। সর্বশেষ গিট কমিট এক বছর আগে হয়েছিল এবং আমি নতুন প্যাকেজগুলি ভঙ্গ করেছি figure এখন আমি পাসপোর্ট চেষ্টা করতে যাচ্ছি।