किसी एकल पृष्ठ के लिए लॉगिन पृष्ठ को एक अलग पृष्ठ क्यों बनाया जाए?


28

मैं सोच रहा हूं कि ऐसा क्यों लगता है कि एसपीए का लॉगिन पृष्ठ एक अलग पेज होना चाहिए जो एसपीए का पेज न हो (जैसा कि लोड किया गया है (अजाक्स अनुरोधों के माध्यम से डेटा लोड और भेजना है)?

मैं केवल एक चीज के बारे में सोच सकता हूं जो सुरक्षा है लेकिन मैं एक विशेष सुरक्षा कारण के बारे में नहीं सोच सकता। मेरा आशय केवल यह है कि दिमाग में आने वाली बात यह है कि यदि आपका लॉगिन पृष्ठ एसपीए के हिस्से में है, तो यह यूजरनेम / पासवर्ड को अजाक्स के माध्यम से भेजता है, जिसे फायरबग या वेब इंस्पेक्टर जैसे उपकरण द्वारा देखा जा सकता है, भले ही आप इसे सामान्य रूप में भेजें POST अनुरोध, अन्य उपकरण हैं जो आसानी से इस डेटा को कैप्चर कर सकते हैं (जैसे कि फ़िडलर, httpscoop, आदि ...)।

क्या मैं कुछ छोड़ रहा हूं?


2
मुझे नहीं लगता कि इस मामले में कोई कारण होना चाहिए। मैं तर्क दूंगा, क्यों नहीं?
स्टीवन एवर्स

1
इसके विरूद्ध मेरा तर्क यह होगा कि लॉगिन पृष्ठ एक अलग html पृष्ठ के रूप में है जबकि शेष अनुप्रयोग एक एसपीए आर्किटेक्चर है जो बिना किसी वास्तविक लाभ के अजीब लगता है (हालाँकि बिंदु msanford द्वारा बनाई गई योग्यता है)।
राणीज़ेक

@ryanzec धन्यवाद मैंने उदाहरण देकर स्पष्ट करने का प्रयास किया कि वास्तविक लाभ है। सबसे पहले, कहीं और संपत्ति लोडिंग को हटाने की बचत नगण्य नहीं है, विशेष रूप से एक असफल लॉगिन (या खाता निलंबन, आदि) के मामले में। दूसरा, यह अधिक परिष्कृत अतुल्यकालिक निर्भरता-आधारित मॉड्यूल प्रणाली की तुलना में लागू करने के लिए बहुत तेज़ है, और विकास जीवनचक्र एक महत्वपूर्ण विचार है (देखें Opbeat कार्यालय मंत्र * (अश्लीलता शामिल है))।
मैसनफोर्ड

"भले ही आप इसे सामान्य POST अनुरोध के रूप में भेजते हैं, लेकिन अन्य उपकरण हैं जो आसानी से इस डेटा को कैप्चर कर सकते हैं"। निश्चित रूप से आपका लॉगिन फ़ॉर्म HTTPS द्वारा संरक्षित है ?
अंजलि

@ajlane हाँ, मेरा लॉगिन (और वास्तव में, पूरा आवेदन) HTTPS के पीछे चलने वाला है
ryanzec

जवाबों:


18

संभवतः यह क्लाइंट-साइड एसेट्स (जैसे भारी जावास्क्रिप्ट चौखटे, चित्र इत्यादि ) के एक समूह को लोड करने से बचाने के लिए है जो केवल एप्लिकेशन द्वारा आवश्यक हैं।

समान प्रदर्शन लक्ष्य प्राप्त करने के और अधिक परिष्कृत साधन हैं (देखें " माल्टे उबल एंड जॉन हेजेलमस्टैड: एक उपन्यास, जावास्क्रिप्ट लोडिंग के लिए कुशल दृष्टिकोण - JSConf EU 2012 ") लेकिन यह लागू करने के लिए बहुत तेज़ है और यकीनन कुशल के रूप में, विशेष रूप से यदि आपका वेब ऐप वैसे भी आपकी लगभग सभी संपत्ति का उपयोग करता है।

आप इसे जंगल में http://infogr.am बीटा जैसी साइट में देख सकते हैं :

  1. http://infogr.am/login/ लोड jquery , राफेल , कस्टम js और 3 css फ़ाइलें।
  2. http://infogr.am/beta/ (अनुप्रयोग के लिए मुख्य SPI पृष्ठ) 10 जावास्क्रिप्ट फ्रेमवर्क, 5 बाहरी सीएसएस फ़ाइलों और लगभग 60 छवियों को लोड करता है।

अपडेट: 2016 में angular2 फ्रंट-एंड और JBoss बैक-एंड के साथ, हम अभी भी इसी कारण से ऐसा करते हैं।
मस्तानफोर्ड

18

मुझे लगता है कि इसके लिए या खिलाफ कुछ उचित तर्क हैं, और मैं कहूंगा कि प्रौद्योगिकी भी निर्णय में भूमिका निभाती है।

एक तर्क हो सकता है कि एक अलग लॉगिन "पृष्ठ" "निर्देशिका सुरक्षा" के उपयोग को सक्षम करता है। आम तौर पर कोई भी लॉगिन "पेज" देख सकता है, लेकिन केवल प्रमाणित उपयोगकर्ता ही एप्लिकेशन "पेज" को देख सकते हैं और यह "निर्देशिका" है। मार्ग को बंद भी किया जा सकता है, जहां / खाता / / App / से भिन्न है और प्रत्येक की अपनी सुरक्षा "प्रोफ़ाइल" है।

इसके अलावा, यदि आप एसपीए दृष्टिकोण का उपयोग कर रहे हैं और आप आवेदन अनुभव के साथ प्रमाणीकरण का मिश्रण कर रहे हैं तो तर्क जटिल हो सकता है। यह मानने के बजाय कि उपयोगकर्ता "लॉग इन है क्योंकि वे यहां हैं", आपको लगातार उनकी प्रमाणीकरण स्थिति की जांच करनी होगी और पूछना चाहिए "क्या यह उपयोगकर्ता यहां होना चाहिए"।

इसके अलावा, लॉगिन पेज आम तौर पर उपभोक्ता का सामना करने वाली साइट पर होता है .. आप www.yourapp.com पर जाते हैं और इसमें जानकारी, संपर्क, समर्थन आदि के बारे में कुछ होता है .. और लॉगिन पृष्ठ से एक "लॉगिन" पृष्ठ .. के बाद प्रमाणीकरण, आप लक्ष्य के एक पूरे मेजबान पर पुनर्निर्देशित कर सकते हैं।

कारण मैं एक अलग लॉगिन पृष्ठ रखता हूं, और मेरे पास वास्तव में मेरी "उपभोक्ता सामना करने वाली" साइट के लिए एक पूरी तरह से अलग ऐप है, क्योंकि मैं अनधिकृत रूप से बहुत कम उजागर कर सकता हूं। संयोग से कुछ रुग्ण मेरे लॉगिन पृष्ठ पर धमाका करना शुरू कर देते हैं, मैं नहीं चाहता कि चीजों के अनुप्रयोग पक्ष को प्रभावित करें .. भले ही लॉगिन केवल एक साधारण वस्तु खोज कर रहा हो .. यह मुझे मेरी प्रभावित करने वाली बोझा को बनाए रखने में मदद करता है उपयोगकर्ता अनुभव .. सबसे खराब स्थिति में, मेरी उपभोक्ता साइट नीचे चली जाती है और कोई भी लॉगिन नहीं कर सकता है, लेकिन कम से कम उपयोगकर्ताओं को लॉग इन नहीं पता है और उनका अनुभव धीमा नहीं होगा .. मैं यह नहीं कह रहा हूं कि बुलेट प्रूफ पसंद है .. लेकिन कम से कम मैंने अनधिकृत क्षेत्र के लिए जोखिम को अलग कर दिया है।


1
सुरक्षा अक्सर एक बड़ा कारण है।
जस्टिन

1
@JustinC: मुझे और अधिक सुरक्षित में लॉगिन के लिए एक अलग पृष्ठ पर समझाएं?
ryanzec

जरूरी नहीं कि फ़ाइल सिस्टम विशेषताओं के माध्यम से (लेकिन यह हो सकता है कि स्थिति क्या कहे) समग्र रूप में (व्यावहारिक रूप में, एक निर्देशिका): लॉगिन पृष्ठ और विशेष रूप से स्थिर संसाधनों (चित्र, स्टाइलशीट, त्रुटि पृष्ठ) के लिए, अनाम पहुंच अक्सर पर्याप्त होती है; अन्य पृष्ठों के लिए, अधिक विशिष्ट प्रमाणीकरण / प्राधिकरण की आवश्यकता हो सकती है।
जस्टिन

2
ऐप के बाहर प्रमाणीकरण करने से ऐप की चिंता होने से प्रमाणीकरण अलग हो जाता है। वास्तविक सुरक्षा कार्यान्वयन और प्रौद्योगिकी पर निर्भर करेगी
हेंज़ोलो

अपडेट
२०१S

10

ऐसा करने का एक कारण यह है कि आप सामान्य कुकी आधारित सत्रों का उपयोग कर सकते हैं। उपयोगकर्ता लॉग इन करता है, प्रतिक्रिया प्रारंभिक मुख्य पृष्ठ के साथ कुकी भेजता है ... और फिर बाद के सभी अजाक्स कॉल कुकी को सर्वर पर वापस भेजते हैं।


6

मुझे ऐसा करने के कुछ कारण दिखाई देते हैं:

  1. मैं web.xml में सामान्य पथ-आधारित अभिगम नियंत्रण नियमों का उपयोग कर सकता हूं।
  2. मुझे यकीन नहीं हो सकता है कि मैंने अपने पूरे अजाक्स एप्लिकेशन को ठीक से संरक्षित किया है, और मुझे आश्वस्त होने के लिए व्यापक परीक्षण करने की आवश्यकता है।
  3. मैं एक फ्रेमवर्क (जैसे स्प्रिंग सिक्योरिटी), एक थर्ड-पार्टी एप्लिकेशन या एक SSO समाधान (जैसे CAS या JOSSO) को प्रमाणीकरण सौंप सकता हूं।
  4. मैं उपयोगकर्ता के लिए ब्राउज़र कैश उपयोगकर्ता नाम और (वैकल्पिक रूप से) पासवर्ड दे सकता हूं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.