HTTP 401 - উপযুক্ত ডাব্লুডাব্লুডাব্লু-প্রমাণীকরণ শিরোনামের মান কী?


109

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

করা সমস্ত অনুরোধগুলি এই মেকানিজমের মাধ্যমে পরিচালিত হয়, যার মধ্যে এজেএক্স কল রয়েছে। মূলত আমরা লগইন পৃষ্ঠার সাথে একটি 200 শিরোনাম প্রেরণ করছিলাম, যা এজ্যাক্সের সাথে কিছু সমস্যার পরিচয় দেয় যেহেতু যদি 200 প্রতিক্রিয়া প্রেরণ করা হয় তবে কোড চালানো হয়, এবং এই আরপিসি কলগুলি থেকে ফিরে পাঠানো বেশিরভাগ ডেটা হ'ল জেএসএন বা কাঁচা জাভাস্ক্রিপ্ট যা মূল্যায়ন করে (না জিজ্ঞাসা করুন: |)।

আমি প্রস্তাব দিয়েছি যে একটি 401 আরও ভাল, যেহেতু আমাদের JSON পার্সার এইচটিএমএল লগইন পৃষ্ঠা গ্রাস করার চেষ্টা করবে না .. :)

অনুমানটি পড়ার সময় , আমি লক্ষ্য করেছি যে WWW-Authenticateক্ষেত্রটিও অবশ্যই পাঠাতে হবে।

এই ক্ষেত্রের জন্য একটি ভাল মান কি? হবে Application Loginযথেষ্ট?

উত্তর:


67

HTTP বেসিক প্রমাণীকরণের ইঙ্গিত দেওয়ার সময় আমরা এরকম কিছু ফিরিয়ে দিই:

WWW-Authenticate: Basic realm="myRealm"

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

আপনি স্পষ্টতই বেসিকটি ব্যবহার করছেন না কারণ বেসিক অথ ব্যবহার করার সময় সেশনটির মেয়াদ শেষ হওয়ার কোনও মানে নেই। আমি ধরে নিলাম আপনি কিছু ফর্ম ভিত্তিক প্রমাণীকরণ ব্যবহার করছেন।

স্মরণে থেকে, উইন্ডোজ চ্যালেঞ্জ প্রতিক্রিয়া একটি আলাদা স্কিম এবং বিভিন্ন যুক্তি ব্যবহার করে।

কৌশলটি হ'ল এটি কী স্কিমগুলি সমর্থন করে এবং কীভাবে এটি তাদের প্রতিক্রিয়া জানায় তা নির্ধারণ করার জন্য এটি ব্রাউজারের উপর নির্ভর করে।

আপনি যদি ফর্মগুলি ভিত্তিক প্রমাণীকরণ ব্যবহার করছেন তবে আমার 200+ রিলগিন পৃষ্ঠার সাথে থাকতে হবে তবে একটি কাস্টম শিরোনাম যুক্ত করুন যা ব্রাউজার উপেক্ষা করবে তবে আপনার এজেএক্স সনাক্ত করতে পারে।

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

এই প্রতারণা এড়িয়ে চলুন যে সেশনটি জীবিত রাখার জন্য প্রতি 5 মিনিটে স্ক্রিপ্টটি স্ক্রিনটি পেয়ে যায় যা সেশনের মেয়াদ শেষ হওয়ার পয়েন্টকে পরাস্ত করে।

অন্য বিকল্প হ'ল এজেএক্স অনুরোধটি পোড়া তবে এটি ব্যবহারকারীর দুর্বল অভিজ্ঞতা।


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

2
: কিভাবে আপনি এখনও HTTP- র 401 ব্যবহার করতে পারেন সম্পর্কে এই উত্তরটি দেখুন stackoverflow.com/questions/928874/...
lanoxx

হ্যাঁ, কেবলমাত্র ডাব্লুডাব্লুডাব্লু-প্রমাণীকরণ শিরোনামে কিছু রাখুন, আমার ধারণা। অনুরূপ শিরাতে অন্য উত্তর হ'ল স্ট্যাকওভারফ্লো.com/ a/ 1088127/689161 বা কেবল অনুমানটি লঙ্ঘন করুন এবং শিরোনাম পাঠানো বিরক্ত করবেন না (কমপক্ষে কয়েকটি সাইট এটি করবে); 401 এখনও 403 এর চেয়ে বেশি উপযুক্ত
জেংকেভ

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

শিরোনামটি ব্যবহার করার জন্য আপনার একটি রচনা স্কিম তৈরি করা উচিত। তারপরে ব্রাউজারটি যুক্ত হবে না কারণ এটি স্কিমটি বুঝতে পারে না। আপনি শিরোনাম অন্তর্ভুক্ত না করলে কিছু ক্লায়েন্ট বিচলিত হন বা বিভ্রান্ত হন।
কায়েস

7

না, আপনাকে ব্যবহার করার জন্য প্রমাণীকরণ পদ্ধতি (সাধারণত "বেসিক") এবং প্রমাণীকরণের ক্ষেত্রটি নির্দিষ্ট করতে হবে। উদাহরণ অনুরোধ এবং প্রতিক্রিয়ার জন্য http://en.wikedia.org/wiki/Basic_access_authentication দেখুন ।

আপনি আরএফসি 2617 পড়তে চাইতে পারেন - HTTP প্রমাণীকরণ: বেসিক এবং ডাইজেস্ট অ্যাক্সেস প্রমাণীকরণ


-7

যখন ব্যবহারকারী সেশনটি শেষ হয়ে যায়, আমি কোনও HTTP 204 স্থিতি কোডটি ফেরত পাঠাই। দ্রষ্টব্য যে HTTP 204 স্থিতিতে কোনও সামগ্রী নেই। ক্লায়েন্টের পক্ষে আমি এটি করি:

xhr.send(null);
if (xhr.status == 204) 
    Reload();
else 
    dropdown.innerHTML = xhr.responseText;

এখানে পুনঃলোড () ফাংশনটি রয়েছে:

function Reload() {
    var oForm = document.createElement("form");
    document.body.appendChild(oForm);
    oForm.submit();
    }

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