2012-08-01 12 views
5

मैं कस्टम यूआरएल पैरामीटर (पथ चर) के आधार पर सुरक्षा नियम बनाना चाहता हूं। उदाहरण के लिए । मान लें कि मैं ऐसे उपयोगकर्ता को रखना चाहता हूं जिसके पास ब्रांड 1 और ब्रांड 2 नामक संसाधनों के लिए व्यवस्थापक पहुंच है लेकिन ब्रैंड 3 नामक संसाधन तक पहुंच नहीं है। हम निम्नलिखित लिंक का उपयोग कर संसाधनों को संपादित कर सकते हैं।पथ परिवर्तनीय पैरामीटर के साथ वसंत सुरक्षा

http://myapp/brand/edit/1 
http://myapp/brand/edit/2 
http://myapp/brand/edit/3 

अब सुरक्षा के संदर्भ में मुझे लगता है कि

<security:intercept-url pattern="/brand/edit/{brandId}" 
      access="hasRole('ROLE_ADMIN') or 
        @authorizationService.hasBrandPermission(
        #brandId, principal.username)"/> 

केवल एक चीज मैं उपयोगकर्ता नाम है की तरह कुछ करना चाहते हैं। BrandId हमेशा शून्य है। मैं @PreAuthorize के साथ ऐसा करता था और यह काम करता था लेकिन अब मैं सभी नियंत्रक वर्गों में फैलाने के बजाय एकल xml फ़ाइल में सुरक्षा कॉन्फ़िगरेशन को केंद्रीकृत करना चाहता हूं। इसके अलावा जब मैं @PreAuthorize का उपयोग कर रहा था, तो मेरे एक्सेस-इनकार-हैंडलर ने मुझे अस्वीकार पृष्ठ में रीडायरेक्ट नहीं किया था, लेकिन बदसूरत AccessDeniedException कीड़े प्रदर्शित किया था।

मैं वास्तव में किसी भी विचार की प्रशंसा करता हूं।

+0

मुझे समस्या नहीं है। क्या यह है कि BrandId हमेशा शून्य है? या यह है कि यह संसाधन सुरक्षित नहीं है? या यह बदसूरत AccessDeniedException पृष्ठ है? –

+0

ब्रांड आईडी शून्य –

उत्तर

1

आप नियमित अभिव्यक्ति का उपयोग करने का प्रयास कर सकते हैं।

आप 3.1

अधिक जानकारी के लिए दस्तावेज़ देखें अगर आपके वसंत सुरक्षा का उपयोग कर अपने http तत्व या अनुरोध-मेल खाने वाला = "रेगुलर एक्सप्रेशन" में विशेषता पथ-type = "रेगुलर एक्सप्रेशन" जोड़ने की आवश्यकता होगी

+0

है हालांकि मैं regexp केवल यूआरएल पैटर्न को परिभाषित करने के लिए है जो पथ चर संदर्भ के लिए नहीं है। यानी मैं ऐसा कुछ कर सकता हूं "/path/to/*.html" तो यह पैटर्न से मेल खाने वाले सभी यूआरएल लागू करता है लेकिन मुझे क्या दिलचस्पी है "/ path/to/resource/{resourceId}" और संसाधन आईडी मान ' एक्सेस 'सेक्शन यानी एक्सेस = "@ myService.mySecurityMethod (#resourceId)" –

1

बदलें में स्प्रिंग सुरक्षा संस्करण अपने pom.xml4.1.0.RELEASE रहे हैं:

<spring-security.version>4.1.0.RELEASE</spring-security.version> 

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-web</artifactId> 
    <version>${spring-security.version}</version> 
</dependency> 

आप साफ करने के लिए आवश्यकता हो सकती है उसके बाद आपका मैवेन प्रोजेक्ट।

(मुझे पता है, यह एक पुराना सवाल है। फिर भी, मुझे 3 साल बाद एक ही समस्या का सामना करना पड़ा)।

+0

यह प्रश्न से कैसे संबंधित है? – tunix

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