2013-01-10 17 views
7

मेरे पास दो वेब अनुप्रयोग हैं। मैं एक वेब एप्लिकेशन में लॉगिन करूंगा और पहले एप्लिकेशन से लिंक या रीडायरेक्शन द्वारा दूसरे पर जाउंगा। आवेदन दो में कुछ कदम पूरा करने के बाद, मुझे एप्लिकेशन एक पर रीडायरेक्ट कर दिया जाएगा। मैं इसे कैसे कार्यान्वित कर सकता हूं?जावा - सत्र को दो या दो से अधिक वेब एप्लिकेशन के बीच कैसे साझा करें?

यहां आवेदन दो सामान्य है, और मेरे पास एप्लीकेशन वन के तीन उदाहरण होंगे, जो आवेदन दो के साथ बातचीत करेंगे।

कृपया एक बेहतर दृष्टिकोण का सुझाव दें। मुझे इसे लागू करने के लिए वसंत और वसंत वेबफ्लो का उपयोग करना होगा।

+0

सीएएस https://en.wikipedia.org/wiki/Central_Authentication_Service का उपयोग करें जहां भाषा के आधार पर कई कार्यान्वयन हैं। स्प्रिंग के लिए आपने इसे documentaiton में देखा है? http://docs.spring.io/spring-security/site/docs/current/reference/html/cas.html –

उत्तर

4

तकनीकी रूप से, दो वेब एप्लिकेशन (दो अलग WARs) के बीच सत्र साझा नहीं किया जा सकता साझा नहीं किया जा सकता है। यह सुरक्षा कारणों के लिए डिज़ाइन और किया गया है। मैं आपकी समस्या के लिए निम्नलिखित टिप्पणियों और सुझावों करना चाहते हैं,

  1. सत्र आम तौर पर एक सत्र आईडी जो आम तौर पर सर्वर साइड पर ब्राउज़र और सत्र वस्तु पर एक कुकी के रूप में संग्रहीत किया जाता है का उपयोग कर पता लगाया जाता है।
  2. जब आप कोई अनुरोध भेजते हैं तो इस कुकी को सर्वर पक्ष हर बार भेजा जाता है।
  3. एक कुकी को केवल सर्वर से भेजा जाएगा जहां से यह आया था।
  4. तो www.mysite.com/app1 द्वारा सेट की गई कुकी केवल www.mysite.com/app1 पर भेजी जाएगी, न कि www.mysite.com/app2 पर।
  5. आपके लिए, उपयोगकर्ता सत्र के लिए दो एप्लिकेशन में मान्य होने के लिए, ब्राउज़र को ऐप 1 और एप 2 से सेट करने के लिए दो कुकीज़ की आवश्यकता होगी।
  6. जावा स्क्रिप्ट का उपयोग करते हुए, जब आप ऐप 1 में लॉगिन करते हैं, तो एक तरीका होगा, ऐप 2 में लॉगिन अनुरोध भी भेजें। जब ये दोनों अनुरोध सफलतापूर्वक वापस आते हैं, तो आपके ब्राउज़र में दोनों एप्लिकेशन (एप 1 और एप 2)
  7. के लिए सत्र होगा, जब आप ऐप 1 से लॉगआउट करते हैं तो लॉगआउट की अपनी चुनौतियां होंगी, आपको ऐप 2 से लॉगआउट करने की भी आवश्यकता होगी। तकनीकी रूप से इसका मतलब है, आपको इन दोनों अनुप्रयोगों से सेट कुकीज़ को साफ़ करने की आवश्यकता है। जावा स्क्रिप्ट से थोड़ी मदद के साथ आप यह कर सकते हैं।
+0

"तो www.mysite.com/app1 द्वारा सेट की गई कुकी केवल www.mysite.com/app1 पर भेजी जाएगी, न कि www.mysite.com/app2" WRONG! – user544262772

+0

चश्मे से (http://tools.ietf.org/html/rfc2109): पथ विशेषता URL की उप-समूह निर्दिष्ट करती है जिस पर यह कुकी लागू होती है। – Santosh

+0

इसके अलावा इस पोस्ट का संदर्भ लें: http://stackoverflow.com/questions/1967963/how-to-access-cookie-values-on-different-paths-of-the-same-domain-using-php – Santosh

5

जब आपको ऐप 1 से ऐप 2 पर कॉल करना है, तो अनुरोध ऑब्जेक्ट (अनुरोध पैराम्स के रूप में) के माध्यम से सभी आवश्यक जानकारी पास करें, फिर ऐप 2 सत्र पढ़ और बना सकता है (शायद इसके लिए एक सर्वलेट/फ़िल्टर का उपयोग किया जा सकता है)।

आप क्लस्टरिंग का उपयोग कर मशीनों में एक ही एप्लिकेशन (एप 1 और एप 1) के बीच एक सत्र साझा कर सकते हैं।

+0

आपके उत्तर अनंत के लिए धन्यवाद। मेरे पास दो अलग सत्र हो सकते हैं। एक सत्र के लिए कोई ज़रूरत नहीं है। कृपया इसे लागू करने के लिए कुछ विचार सुझाएं। मुझे नहीं पता कि इसे कैसे कार्यान्वित किया जाए। यह एक प्रवाह की तरह है। मैं ऐप 1 में कुछ कार्यक्षमता कर रहा हूं। उसके बाद मैं ऐप 2 पर जा रहा हूं और कुछ अन्य कार्यक्षमता कर रहा हूं जो ऐप 1 की निरंतरता है और फिर एप 1 पर लौट रहा है और प्रवाह को पूरा कर रहा है। – shankarmbtech

+0

यह भुगतान प्रक्रिया के लिए दूसरे ऐप पर जा रहा है और ऐप 1 – shankarmbtech

+0

पर वापस आ रहा है जो आपने समझाया है वह एक सामान्य भुगतान प्रक्रिया है (जैसा कि आपने बताया है) प्रक्रिया यहां अनुरोधों (आमतौर पर HTTP पोस्ट) के हिस्से के रूप में सभी आवश्यक जानकारी पास करनी होगी। ऐप 2 में एक सत्र तैयार करेगा (जो भुगतान और रिटर्न को संभालता है) ... –

संबंधित मुद्दे