से आरईएसटी एपीआई के लिए प्रमाणीकरण और प्रमाणीकरण मैं एक PHP आरईएसटी एपीआई का निर्माण कर रहा हूं जिसका उपयोग जावास्क्रिप्ट क्लाइंट से किया जाएगा, और कुछ मुद्दों को समझने के लिए कि चीजों को कैसे कार्यान्वित किया जाए और चीजों का उपयोग कैसे किया जाए। ऐसे कई एप्लिकेशन होंगे जो एक जावास्क्रिप्ट लाइब्रेरी का उपयोग करेंगे जो मैं अपने आवेदन के साथ बात करने और बातचीत करने के लिए विकसित हो रहा हूं। मैं उनमें से प्रत्येक को एपीआई कुंजी प्रदान करूँगा, इसलिए यह कोई मुद्दा नहीं है।जावास्क्रिप्ट क्लाइंट
जहां मैं भ्रमित हो रहा हूं यह है कि इन साइटों पर उपयोगकर्ताओं को मेरे आवेदन के लिए प्रमाणित कैसे किया जाए। ऐसा लगता है कि यह बाहरी साइट मेरे उपयोगकर्ता का खाता और पासवर्ड जानकारी स्टोर करने के लिए एक बुरा विचार है; इसलिए, मुझे लगता है कि मुझे अपनी जावास्क्रिप्ट लाइब्रेरी में एक लॉगिन विजेट शामिल होना चाहिए जो मेरे आवेदन के लिए उपयोगकर्ता की खाता जानकारी मांगे।
यदि प्रमाणीकरण सफल होता है, क्योंकि मैं एक आरईएसटी एपीआई के साथ काम कर रहा हूं, तो मुझे क्लाइंट साइड कुकी या किसी चीज़ में पुनर्प्राप्त टोकन को स्टोर करने की आवश्यकता होगी ताकि उपयोगकर्ता को मेरे एप्लिकेशन में फिर से लॉगिन करने की आवश्यकता न हो बाहरी साइट के प्रत्येक पृष्ठ पर। हालांकि, क्या होता है यदि उपयोगकर्ता बाहरी साइट से लॉग आउट करता है, और फिर कोई अन्य उपयोगकर्ता उसी ब्राउज़र से लॉग इन करता है? जहां तक मेरी जावास्क्रिप्ट लाइब्रेरी का संबंध है, पुराना उपयोगकर्ता अभी भी मेरे एप्लिकेशन में लॉग इन होगा, क्योंकि कुकी/टोकन अभी तक समाप्त नहीं हुआ होगा - पिछले उपयोगकर्ता का सत्र समाप्त होने पर मैं अपनी कुकी को कैसे साफ़ कर सकता हूं? या, क्या मैं यहां सही रास्ते से पूरी तरह से बंद हूं?
तो, मैं सोच रहा हूँ प्रक्रिया की तरह कुछ होगा:
var token; // Some hashed string containing an expiration date and user id
var apiKey = '123abc';
// Read the cookie and check if it already contains the token
token = readCookie('token');
if (token == '') {
// get username and password from user through some prompt
var request_data = {apiKey: apiKey, user: username, pass: password};
$.post('https://service.com/api/user/login', request_data, function(data) {
token = data;
document.cookie = "token=" + token;
});
}
...
var get_data = {apiKey: apiKey, token: token};
$.get('http://service.com/api/<object>', get_data, function(data) {
// Do something with data
});
क्षमा करें, है कई यहाँ में दफन सवाल। मुझे लगता है कि मुख्य बात यह है कि अगर मैं कुकी पर टोकन संग्रहीत कर रहा हूं, तो मैं कैसे सुनिश्चित करूं कि जब उपयोगकर्ता बाहरी एप्लिकेशन से लॉग ऑफ हो जाए तो इसे साफ़ कर दिया जाए? या, अगर मुझे इसे कुकी में संग्रहीत नहीं किया जाना चाहिए, तो मैं ग्राहक को उपयोगकर्ता के राज्य के बारे में कैसे जागरूक रखूं?
मुझे लगता है कि आपको अपने जेएस एपीआई में कुछ 'लॉगिन'/'लॉगआउट' विधियां प्रदान करनी चाहिए, जो आपके क्लाइंट (एप्लिकेशन में आपकी लाइब्रेरी का उपयोग करने वाली साइट) को उनके मूल लॉगिन/लॉगआउट अनुक्रम के अनुसार कॉल करना चाहिए। अगर उन्हें प्रमाणीकरण की आवश्यकता नहीं है, तो मुझे डर है कि आप इस पल को तब तक नहीं रोक सकते जब एक उपयोगकर्ता एक ही ब्राउज़र में दूसरे स्थान पर होता है (उदाहरण के लिए, कुछ इंटरनेट कैफे में)। – Stan