2012-03-02 9 views
5

मैं टोमकैट पर्यावरण पर जावा सर्वलेट सीख रहा हूं। मैं सीख रहा हूं कि j_security_check का उपयोग कर फॉर्म आधारित लॉगिन प्रमाणीकरण का उपयोग कैसे करें। तो, मेरे सर्वलेट में, मेरे पास एक लॉगिन पृष्ठ है जिसमें j_username और j_password है। उस सर्वलेट की web.xml फ़ाइल में, मेरे पास लैंडिंग पृष्ठ, "landing.html" इंगित करने वाली स्वागत पृष्ठ सूची है। तो, आदर्श रूप से, सफल लॉगिन के बाद, मैं चाहता हूं कि उपयोगकर्ता "landing.html" पृष्ठ पर रीडायरेक्ट हो जाए।j_security_check रीडायरेक्ट

प्रमाणीकरण के बिना (कोई फॉर्म आधारित प्रमाणीकरण नहीं), मेरा सर्वलेट खुलता है और उम्मीद के अनुसार "landing.html" पृष्ठ पर जाता है ("localhost: 8080/MyServlet" - landing.html की सामग्री दिखाता है)।

हालांकि, अब, j_security_check के साथ एक सफल लॉगिन के बाद, किसी कारण से, मैं स्वचालित रूप से "land.html" फ़ाइल के लिए .css फ़ाइल पर रीडायरेक्ट हो जाता हूं। मैं समझ नहीं पा रहा हूं कि यह क्यों हो रहा है।

क्या कोई विशेष तरीका है कि मैं सफल प्रमाणीकरण के बाद "लैंडिंग.html" पृष्ठ को लोड करने के लिए सर्वर को कैसे बता सकता हूं और इसे कहीं और आगे नहीं भेज सकता?

संपादित

* ठीक है, मैं इसे हल। सफल प्रमाणीकरण के बाद लोड होने वाली सीएसएस फ़ाइल को login.html पृष्ठ के <head></head> टैग के भीतर सूचीबद्ध किया गया था जहां j_username और j_password हैं। मैंने जोड़ा कि लॉगिन पृष्ठ के डिज़ाइन को बनाने के लिए सीएसएस फ़ाइल शेष वेबसाइट के साथ मिलती है। मेरा अनुमान है कि जब सर्वर वांछित संसाधन को फिर से लोड कर रहा है, किसी कारण से यह मुख्य टैग से शीर्ष सीएसएस फ़ाइल को फिर से लोड कर रहा था। वास्तव में अजीब। तो, j_security_check बिलाव पर वेबसाइटों के लिए किसी भी प्रमाणीकरण करने के लिए सबसे अच्छा तरीका है या वहाँ एक बेहतर और अधिक विश्वसनीय तरीका है *

उत्तर

10

प्रपत्र-आधारित प्रमाणीकरण के व्यवहार निम्नलिखित है:

  • ब्राउज़र एक संरक्षित यूआरएल
  • सर्वर अपने अनुरोध को बीच में रोक के लिए अनुरोध भेजता, देखता है कि आप प्रमाणित नहीं कर रहे हैं, और loginf प्रपत्र पृष्ठ पर रीडायरेक्ट
  • में उपयोगकर्ता के लॉग सर्वर URL कि चालू होने पर रीडायरेक्ट टी वह प्रमाणीकरण: संरक्षित यूआरएल पहले चरण में पूछा गया।

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

मेरा अनुमान है कि लैंडिंग पृष्ठ संरक्षित नहीं है, लेकिन इसकी सीएसएस फ़ाइल है। तो अनुरोध जो प्रमाणीकरण को अनुरोध करता है वह अनुरोध जो सीएसएस फ़ाइल लोड करने का प्रयास करता है, जिसके कारण उपयोगकर्ता को सीएसएस फ़ाइल पर रीडायरेक्ट किया जाता है।