2013-04-11 8 views
6

मेरे पास अगला उपयोग केस है:अनाम उपयोगकर्ता के लिए टोमकैट/वसंत सत्र प्रबंधन

हमारे पास वेबस्टोर है जहां उपयोगकर्ता कुछ सामान चुन सकते हैं और फिर उन्हें खरीद सकते हैं। आवेदन में लॉगिन करने से पहले वह अपने कार्ट में माल जोड़ सकता है। इन सभी वस्तुओं को अपने सत्र में संग्रहीत किया जाना चाहिए। जब उपयोगकर्ता "भुगतान" बटन पर क्लिक करता है तो हम उसके क्रेडेंशियल्स/कार्ड/आदि से पूछेंगे।

मेरी समस्या: जब मैं गाड़ी में आइटम जोड़ने से पहले लॉगिन करता हूं तो सभी सही तरीके से काम करते हैं। लेकिन जब मैं अज्ञात उपयोगकर्ता के रूप में कार्ट में आइटम जोड़ने की कोशिश करता हूं, तो आइटम संग्रहित नहीं होते हैं। अज्ञात उपयोगकर्ता के रूप में प्रत्येक पृष्ठ को रीफ्रेश करने के बाद मुझे हमेशा अलग JSESSIONID प्राप्त होता है।

मैं सरल समस्या बनाने का निर्णय लेता हूं जो मेरी समस्या का वर्णन करता है। मुझे लगता है कि इसे मेरे स्रोतों के बिना तय नहीं किया जा सकता है।

https://github.com/AlexTestAccount/simple_test

यह बहुत ही सरल:

यहाँ मेरी अनुप्रयोग है। यह केवल एक नियंत्रक और सत्र बीन contais जहां मैं कुछ बचाने की कोशिश करो।

रन के लिए यह आप Gradle, बिल्ला की जरूरत है और enviropment चर CATALINA_HOME परिभाषित करते हैं, से आप का उपयोग कर सकते हैं:

Gradle तैनात

पी.एस.

>Invalidating session with Id '<originalSessionId>' <and : without> migrating attributes 

तो यह प्रिंट "विशेषताओं पलायन के बिना" तो आप वसंत securitys विन्यस्त करने की जरूरत: क्षमा करें मेरी अंग्रेजी

उत्तर

1

सक्षम डिबग लॉग के लिए org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy

स्तर के लिए एक लॉग बयान जब आप लॉगिन होना चाहिए SessionFixationProtectionStrategy.migrateSessionAttributes से true (लेकिन यह डिफ़ॉल्ट होना चाहिए)

शायद एक और समस्या यह है कि जब आप http से https पर स्विच करते हैं तो टॉमकैट सत्र बदलता है। यह सत्यापित करने के लिए कि यह समस्या है: पहले अपने कार्ट में https (लॉग इन नहीं) और आइटम पर स्विच करें और फिर जांचें कि वे गायब हो गए हैं या नहीं। लेकिन टोमकैट को http से https (लेकिन दूसरी तरफ नहीं) पर स्विच करते समय सत्र सामग्री को सामान्य रूप से संरक्षित करना चाहिए।

+0

मैं http प्रोटोकॉल का उपयोग करता हूं और http से https पर स्विच नहीं करता हूं। – Alex

+0

क्या आपको लॉग स्टेटमेंट मिला? – Ralph

+0

सत्र फ़िक्सेशनप्रतिबंधस्ट्रेटी जिसे पृष्ठ रीफ्रेश करते समय नहीं कहा जाता है। – Alex

0

क्षमा करें दोस्तों, यह पर्यावरणीय मुद्दा था। मैं सिर्फ स्थानीयहोस्ट के लिए अपनी सभी कुकीज़ साफ़ करता हूं और अब सभी काम करता हूं।

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