मेरे वसंत सुरक्षा config:
<कोड> & lt; सुरक्षा: http स्वतः कॉन्फ़िगरेशन = "true "उपयोग-अभिव्यक्ति =" सत्य "& gt; & LT; सुरक्षा: अवरोधन-यूआरएल ढांचा = "/ खेल / **" पहुँच = "isAuthenticated ()" / & gt; & Lt; सुरक्षा: अवरोधन- url पैटर्न = "/ **" access = "permitAll" / & gt; & LT; सुरक्षा: फार्म के लिए लॉग इन पासवर्ड पैरामीटर = "पासवर्ड" उपयोगकर्ता नाम पैरामीटर = "उपयोगकर्ता नाम" के लिए लॉग इन-पेज = "/" डिफ़ॉल्ट-लक्ष्य-url = "/ खेल /" के लिए लॉग इन प्रसंस्करण-url = "/ processLogin" प्रमाणीकरण -failure-url = "/" / & gt; & LT; सुरक्षा: लॉगआउट-यूआरएल लॉगआउट = "/ खेल / लॉगआउट" logout-सफलता-url = "/" को नष्ट-कुकीज़ = "true" अमान्य सत्र = "true" / & gt; & Lt; सुरक्षा: एक्सेस से वंचित-हैंडलर रिफ = "ऐक्सेसडिनेटेडहैंडलर" / & gt; & Lt; / सुरक्षा: http & gt;
कस्टम हैंडलर:
@Component सार्वजनिक वर्ग AccessDeniedHandler फैली AccessDeniedHandlerImpl {@Override सार्वजनिक शून्य हैंडल (HttpServletRequest अनुरोध, HttpServletResponse प्रतिक्रिया, AccessDeniedException अपवाद) फेंकता IOException, सर्विसलेट अप्सप्शन {सुपर.handle (अनुरोध, प्रतिक्रिया, अपवाद); }}
अपवाद समाधानकर्ता:
<कोड> & lt; सेम वर्ग = "org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" & gt; & Lt; संपत्ति नाम = "अपवाद मैपिंग" & gt; & LT; रंगमंच की सामग्री & gt; & Lt; प्रोप कुंजी = "। AccessDeniedException" & gt; एक्सेसडिनेटेड & lt; / prop & gt; & Lt; / रंगमंच की सामग्री & gt; & Lt; / संपत्ति & gt; & Lt; / सेम & gt;
मेरे पास समस्या यह है कि वसंत सुरक्षा में कोई भी अपवाद नहीं है। उदाहरण के लिए, जब मैं एक सुरक्षित यूआरएल दर्ज करता हूँ, यह मुझे लॉगिन पेज पर रीडायरेक्ट करता है अगर मैं कॉन्फ़िग से लॉगिन पेज को हटा देता हूं, तो यह मुझे सुरक्षा सुरक्षा लॉगिन करने के लिए रीडायरेक्ट करता है। इसके कारण मैं AccessDeniedException जैसे किसी भी अपवाद को नियंत्रित नहीं कर सकता जैसा कि आप ऊपर देख सकते हैं, मैंने कस्टम एक्सेस से वंचित हैंडलर को परिभाषित किया है जो संभाल पद्धति ओवरराइड करता है लेकिन यह इसके अंदर भी नहीं जाता है। मैंने भी SimpleMappingExceptionResolver के साथ कोशिश की, लेकिन वह भी काम नहीं करता है तो मेरा सवाल यह है कि: मैं वसंत सुरक्षा को अपवादों को कैसे रोकूं तो मैं उन्हें रिसीवर या कस्टम हैंडलर से पकड़ सकता हूं?
मेरे AccessDeniedHandler ने काम नहीं किया है, इस कारण है क्योंकि यह केवल प्रमाणीकृत उपयोगकर्ताओं पर लागू होता है, इसलिए जब कोई प्रमाणिक उपयोगकर्ता केवल अधिकृत उपयोगकर्ताओं के लिए सामान का उपयोग करने का प्रयास करता है, तो त्रुटि पृष्ठ प्रदर्शित करने के लिए (यह पकड़ने की कोशिश का उद्देश्य था एक AccessDeniedException), आपको अपना कस्टम प्रविष्टि बिंदु लिखना चाहिए, और डिफ़ॉल्ट को ओवरराइड करना होगा।
ल्यूक टेलर के लिए धन्यवाद मुझे यह स्पष्ट करने के लिए। < / P>
Comments
Post a Comment