दिलचस्प पोस्ट
चयन के जरिए ओपन यूआरएल यूआरएल – jQuery एनपीएम बनाम बुवर बनाम ब्राउजरफ़ेस्ट बनाम गल्प बनाम ग्रन्ट बनाम वेबपैक एक डाटाफ्रेम स्ट्रिंग कॉलम को कई विभिन्न कॉलम में विभाजित करना कैसे जावा में एक निर्देशिका बनाने के लिए? JavaFX चार्ट में एक पंक्ति जोड़ना C ++ में मुझे cin.ignore () का उपयोग कब और क्यों करना है? जावा में डबल प्रारूप करने के लिए String.format () यदि आप एसटीएल कंटेनर के अंत इटरेटर के बराबर इटरेटर को बढ़ाते हैं तो क्या होगा नेटवर्क ड्राइव पर फ़ाइल पढ़ें संकलन के लिए रैम ड्राइव – क्या ऐसी कोई बात है? EntityFramework – समग्र कुंजी की क्वेरी शामिल है Symfony 2 (.7) में बहिष्कृत चेतावनी को अक्षम करें ओपनसीवी बिंदु (एक्स, वाई) (स्तंभ, पंक्ति) या (पंक्ति, स्तंभ) का प्रतिनिधित्व करते हैं खूबसूरत सूप 4 खोज_सभी लिंक सूचियाँ नहीं मिलती हैं जो खूबसूरत सूप 3 पाता है क्या अजगर में कोई थ्रेड को मारने का कोई तरीका है?

http बुनियादी प्रमाणीकरण "लॉग आउट"

जब तक ब्राउज़र बंद नहीं हो जाता है तब तक HTTP मूल प्रमाणीकरण क्रेडेंशियल्स को संग्रहीत किया जाता है, लेकिन ब्राउज़र बंद होने से पहले क्रेडेंशियल्स को निकालने का कोई तरीका है?

मैं HTTP 401 स्थिति कोड के साथ एक चाल के बारे में पढ़ा है, लेकिन ऐसा लगता है कि काम ठीक नहीं है (उत्तर देने के लिए टिप्पणी देखें)। संभवतः तंत्र ट्रेक का उपयोग समाधान है ।

क्रेडेंशियल जावास्क्रिप्ट के साथ हटाए जा सकते हैं? या जावास्क्रिप्ट के संयोजन और स्थिति 401 चाल के साथ?

Solutions Collecting From Web of "http बुनियादी प्रमाणीकरण "लॉग आउट""

अद्यतन : यह समाधान अब कई ब्राउज़रों में काम नहीं करता। कैट्सू की टिप्पणी:

क्रोम (16) और IE (9) में सही प्रमाणीकृत क्रेडेंशियल्स को ब्राउजर बनाने के लिए झूठे क्रेडेंशियल्स भेजने का यह समाधान काम नहीं करता है। फ़ायरफ़ॉक्स में काम करता है (9)


असल में आप सेवा के लिए झूठी क्रेडेंशियल भेजकर एक वैकल्पिक हल लागू कर सकते हैं। यह ब्राउज़र्स में किसी पासवर्ड के बिना दूसरा (मौजूद नहीं है?) उपयोगकर्ता नाम भेजकर काम करता है ब्राउज़र प्रमाणीकृत क्रेडेंशियल के बारे में जानकारी खो देता है

उदाहरण:

https://www.example.com/ => मूलभूत प्रमाण के साथ "user1" के रूप में प्रवेश करें

अब खोलो

https: //foobar@www.example.com/

आप लॉग आउट कर रहे हैं। 😉

सादर

Ps: लेकिन आपको दी गई जानकारी पर निर्भर होने से पहले सभी आवश्यक ब्राउज़रों के साथ इस का परीक्षण करें।

जनवरी के जवाब पर विस्तार, और ओयॉन्गस्क के जवाब को अद्यतन करना:

यहां कुछ उदाहरण jquery java-script कोड है जिससे ब्राउज़र को अनिवार्य रूप से एक बोगस लॉगिन अनुरोध को पृष्ठ को सुरक्षित करने का प्रयास करने के लिए भेजा जा सके, जो सभी परीक्षण किए गए ब्राउज़रों में कैश्ड क्रेडेंशियल निकाले जाने के कारण उपयोगकर्ता को किसी गैर-सुरक्षित पृष्ठ।

चेतावनी () जब कुछ गलत हो जाता है तो शायद कुछ और में बदल दिया जाना चाहिए

//Submits an invalid authentication header, causing the user to be 'logged out' function logout() { $.ajax({ type: "GET", url: "PUT_YOUR_PROTECTED_URL_HERE", dataType: 'json', async: true, username: "some_username_that_doesn't_exist", password: "any_stupid_password", data: '{ "comment" }' }) //In our case, we WANT to get access denied, so a success would be a failure. .done(function(){ alert('Error!') }) //Likewise, a failure *usually* means we succeeded. //set window.location to redirect the user to wherever you want them to go .fail(function(){ window.location = "/"; }); } 

तो लॉगआउट () फ़ंक्शन को लॉगआउट लिंक कॉल करने के लिए उतना ही आसान था, और यह उपयोगकर्ता के लिए मूल रूप से काम करता था, हालांकि यह अभी भी तकनीकी रूप से हैक का काम है

आप एक हैक की कोशिश कर सकते हैं जो नवीनतम क्रोम और फ़ायरफ़ॉक्स के साथ काम कर रहा है। अपने सर्वर पर एक "/ लॉगआउट" पृष्ठ बनाएं, जो केवल एक विशिष्ट क्रेडेंशियल जैसे उपयोगकर्ता नाम: झूठे, पासवर्ड: गलत स्वीकार करता है। फिर नीचे दिए गए इस AJAX अनुरोध का उपयोग करते हुए, आप उपयोगकर्ता को उस पृष्ठ पर भेज सकते हैं।

  $("#logout").click(function(e){ e.preventDefault(); var request = new XMLHttpRequest(); request.open("get", "/logout", false, "false", "false"); request.send(); window.location.replace("WHEREVER YOU WANT YOUR LOGGED OUT USER TO GO"); }); 

क्या होता है कि उपयोगकर्ता के क्रेडेंशियल्स के बजाय गलत XMLHttpRequest से झूठे उपयोगकर्ता नाम और पासवर्ड को कैश्ड किया जाता है, और जब कोई उपयोगकर्ता किसी भी पेज में लॉगिन करने की कोशिश करता है, तो यह कैश्ड नकली प्रमाण पत्र का उपयोग करेगा, प्रमाणीकृत करने में विफल हो जाएगा, यह उपयोगकर्ता से पूछेगा दूसरे को दर्ज करने के लिए उम्मीद है की यह मदद करेगा!

आप जावास्क्रिप्ट के साथ क्रेडेंशियल हटा सकते हैं:

  $("#logout").click(function(){ try { document.execCommand("ClearAuthenticationCache"); window.location.href('/logout.html'); // page with logout message somewhere in not protected directory } catch (exception) {} }); 

यह कोड केवल IE में काम करता है। यही कारण है कि कोशिश / पकड़ ब्लॉक वहाँ जोड़ा गया है इसके अलावा, उसी कारण से लॉगआउट लिंक केवल आपको IE उपयोगकर्ताओं के लिए दिखाना चाहिए:

  <!--[if IE]> <div id="logout">[Logout]</div> <![endif]--> 

और अन्य उपयोगकर्ताओं के लिए मेरा सुझाव कुछ ऐसा है:

  <div id="logout2" onclick="alert('Please close your browser window to logout')">[Logout]</div> 

सिर्फ एक क्रियान्वयन पूरा करना जो मुझे ठीक काम करती है: सर्वर पर मैं सत्र, उपयोगकर्ता नाम और पासवर्ड का मूल्यांकन करता हूं, इसलिए मैं उस जानकारी का ट्रैक रखता हूं, प्रवेश एल्गोरिदम इस प्रकार है:

1. जांचें कि उपयोगकर्ता और पासवर्ड रिक्त नहीं है, फिर 401 पर लौटें

2. जांचें कि क्या हमने हमारे लॉग-इन उपयोगकर्ता सूची में सत्र पंजीकृत किया है, अगर नहीं तो जांच लें कि उपयोगकर्ता और पासवर्ड मान्य है और यदि हमारी सूची में सत्र आईडी बचा है, तो 401 पर लौटें। मैं यह कदम समझाऊँगा: यदि सत्र आईडी तीन चीजों में से एक है: एक) उपयोगकर्ता एक और खिड़की खुल रहा है। ख) उपयोगकर्ता सत्र समाप्त हो गया है, यानी उपयोगकर्ता ने लॉग आउट किया है। ग) सत्र निष्क्रियता के कारण समाप्त हो गया। लेकिन हम सत्र को तब तक सहेजना चाहते हैं जब उपयोगकर्ता क्रेडेंशियल्स मान्य हों, लेकिन पासवर्ड के लिए एक बार पूछने के लिए एक बार 401 लौटाते हैं, अगर हम सत्र को नहीं सहेजते हैं तो उपयोगकर्ता लॉग इन नहीं कर सकता क्योंकि हमारे पास नया सत्र आईडी नहीं है हमारी सूची में

3. जांचें कि उपयोगकर्ता क्रेडेंशियल्स सही हैं, यदि हां, तो सत्र की जानकारी को बचाने और पृष्ठों को जारी रखने के लिए, 401 पर वापस लौटें

इसलिए, मुझे उपयोगकर्ता को लॉग आउट करने के लिए केवल एक ही चीज़ है, जब सर्वर लॉगआउट पृष्ठ का अनुरोध करता है और वेब ब्राउजर दोबारा लॉगिन संवाद दिखाता है तो सर्वर पर सत्र को बंद करना है।

मैं सोच रहा हूँ कि मैं यह लिख रहा हूं कि एक कदम होना चाहिए जहां कार्यक्रम जांचता है कि उपयोगकर्ता पहले से ही प्रतिरूपण से बचने के लिए लॉग किया गया है, शायद मैं एकाधिक सत्र को अनुमति देने के लिए एक से अधिक सत्र आईडी बचा सकता हूं, ठीक है, मैं चाहूंगा इसके बारे में आपकी टिप्पणी

आशा है कि आपको ये विचार प्राप्त होगा, और यदि आप कोई सुरक्षा दोष देख रहे हैं तो टिप्पणी;)

यदि आपके पास सर्वर कोड पर नियंत्रण है, तो आप "401 अनधिकृत" जवाब दिए गए "लॉगआउट" फ़ंक्शन बना सकते हैं, जो दिए गए क्रेडेंशियल की परवाह किए बिना। यह विफलता बलों को सहेजे गए क्रेडेंशियल को निकालने के लिए ब्राउज़र।

मैं सिर्फ क्रोम 34, आईई 11, फ़ायरफ़ॉक्स 25 के साथ इस का परीक्षण किया है – Express.js सर्वर और HTTP मूलभूत प्रमाणीकरण का उपयोग करना।