2011-01-31 18 views
5

अक्षम करें हम प्रमाणीकरण के प्रबंधन के लिए स्प्रिंग सुरक्षा का उपयोग कर रहे हैं। जो मुद्दा हम देख रहे हैं वह यह है कि जब किसी उपयोगकर्ता का सत्र एक जीईटी फॉर्म लाने और सहेजने वाले सहेजने वाले बटन को मारने के बीच समाप्त हो जाता है, तो उन्हें लॉगिन पेज पर भेजा जाता है लेकिन वसंत सत्र में मूल पोस्ट जानकारी सहेज रहा है।स्प्रिंग सिक्योरिटी के सहेजे गए रिव्यूस्ट को लॉजिक

हमारा ऐप उन्हें लॉगिन के बाद मूल URL पर वापस नहीं लाता है, बल्कि इसके बजाय उन्हें एक सामान्य प्रारंभ पृष्ठ पर भेजता है। यह ठीक काम करता है, लेकिन जब उपयोगकर्ता पृष्ठ पर वापस लौटने के लिए होता है तो उन्होंने मूल रूप से पोस्ट करने की कोशिश की थी (फॉर्म जीईटी और पोस्ट एक ही यूआरएल हैं) वसंत स्वचालित रूप से पोस्ट को पुनः सबमिट करने का प्रयास करता है जो हम नहीं चाहते हैं।

क्या स्प्रिंग में सहेजे गए सहेजने वाले तर्क को पूरी तरह से अक्षम करने का कोई तरीका है?

+0

सत्र समाप्त हो गया है, तो जहां बचाया अनुरोध से आ रही है? – sourcedelica

+0

वसंत पूर्व-टाइमआउट पोस्ट अनुरोध को कहीं नया सहेज रहा है? सत्र अभी भी हो जाता है। ऐसा लगता है कि AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY –

उत्तर

3

मुझे लगता है कि वसंत सुरक्षा के this jira अंक आपकी समस्या का वर्णन करते हैं और इसे कैसे संभालें।

+1

धन्यवाद, मैं उस जिरा मुद्दे को नहीं ढूंढ पा रहा था। ऐसा लगता है कि मुझे जोड़ने की आवश्यकता है कि कॉन्फ़िगरेशन है: <बीन आईडी = "अपवाद ट्रांस्लेटर" वर्ग = "org.springframework.security.web.access.ExceptionTranslationFilter">

+0

क्या वसंत सुरक्षा 2.0.5 के लिए एक समान विन्यास है? अपवाद ट्रांस्लेशन फ़िल्टर के पास अनुरोध कैश नहीं है –

0

यह सत्र-निर्धारण के संरक्षण = "newSession" विशेषता पर (2.0) या (3.0) की तरह दिखता है भी समस्या को हल करेंगे

1

दो स्थितियों के होते हैं: 1) यदि आप चाहते हैं कि दोबारा लॉगिन करने के बाद, उपयोगकर्ता हमेशा मूल अनुरोध किया गया URL के बजाय डिफ़ॉल्ट लक्ष्य URL पर अग्रेषित किया जाना चाहिए तो

<http auto-config="true"> 
..... 
<form-login login-page="/login" always-use-default-target="true" default-target-url="/xyz" 
     authentication-failure-url="/login?error=true" login-processing-url="/j_security_check"/> 
</http> 

1) यदि आप उस सत्र पर चाहते हैं की तरह अपने security.xml में हमेशा से उपयोग-default-लक्ष्य = "true" डाल relogin के बाद टाइमआउट, उपयोगकर्ता को मूल अनुरोधित यूआरएल को अग्रेषित करना चाहिए, लेकिन आप फॉर्म को पुनः सबमिट नहीं करना चाहते हैं, फिर सत्र-निर्धारण-सुरक्षा = " newSession "

<http auto-config="true"> 
<session-management session-fixation-protection="newSession"/> 
..... 
</http> 

कृपया http कॉन्फ़िगरेशन में पहली पंक्ति के रूप में सत्र-प्रबंधन टैग डालें।

0

Raghuram's answer पर नाथन की टिप्पणी, namespaced XML के साथ यह कुछ इस तरह है के आधार पर:

<security:http> 
    <security:request-cache ref="nullRequestCache" /> 
    <!-- ... --> 
</security:http> 

<bean id="nullRequestCache" class="org.springframework.security.web.savedrequest.NullRequestCache" /> 
संबंधित मुद्दे