2011-11-30 8 views
8

वसंत सुरक्षा 3.0 में, हमारे पास AuthenticationProcessingFilter कक्षा है, जिसमें हम determineTargetUrl() विधि का उपयोग कर रहे थे, जिसने विभिन्न भूमिकाओं के आधार पर यूआरएल वापस कर दिया।वसंत सुरक्षा में भूमिकाओं के आधार पर लक्ष्य यूआरएल निर्धारित करता है 3.1

अब, हम वसंत सुरक्षा 3.1.0.RC3 पर जा रहे हैं और मैं अटक गया हूं कि अब मैं विभिन्न भूमिकाओं के आधार पर यूआरएल कैसे निर्धारित कर सकता हूं क्योंकि AuthenticationProcessingFilter वर्ग को नए संस्करण से हटा दिया गया है। क्या कोई मुझे कुछ कोड के साथ संक्षेप में कदम दे सकता है ताकि मैं अलग-अलग भूमिकाओं के लिए अलग-अलग पृष्ठों पर रीडायरेक्ट करने के लिए कस्टम फ़िल्टर लागू कर सकूं।

उत्तर

19

भूमिकाओं के आधार पर लक्ष्य यूआरएल निर्धारित करने का सबसे अच्छा तरीका नीचे दिखाए गए अनुसार आपकी वसंत सुरक्षा कॉन्फ़िगरेशन में एक लक्षित यूआरएल निर्दिष्ट करना है। यह स्प्रिंग 3.0 या 3.1

<http> 
    ... 
    <form-login login-page="/login" default-target-url="/default"/> 
</http> 

फिर एक नियंत्रक बनाएं जो डिफ़ॉल्ट-लक्ष्य-यूआरएल को संसाधित करता है। नियंत्रक को रोल के आधार पर रीडायरेक्ट या अग्रेषित करना चाहिए। नीचे स्प्रिंग एमवीसी का उपयोग करने का एक उदाहरण है, लेकिन किसी भी प्रकार का नियंत्रक काम करेगा (यानी स्ट्रेट्स, एक सर्वलेट, आदि)।

@Controller 
public class DefaultController { 
    @RequestMapping("/default") 
    public String defaultAfterLogin(HttpServletRequest request) { 
     if (request.isUserInRole("ROLE_ADMIN")) { 
      return "redirect:/users/sessions"; 
     } 
     return "redirect:/messages/inbox"; 
    } 
} 

इस दृष्टिकोण के लिए लाभ यह सुरक्षा के किसी भी विशिष्ट कार्यान्वयन के लिए युग्मित नहीं है, यह किसी भी विशिष्ट MVC कार्यान्वयन के लिए युग्मित नहीं है, और यह वसंत सुरक्षा नाम स्थान विन्यास के साथ आसानी से काम करता है। इस वर्ष स्प्रिंगऑन में प्रस्तुत SecureMail प्रोजेक्ट में एक पूर्ण उदाहरण पाया जा सकता है।

एक विकल्प यह है कि आप एक कस्टम AuthenticationSuccessHandler बना सकते हैं। कार्यान्वयन savedRequestAwareAuthenticationSuccessHandler का विस्तार कर सकता है जो डिफ़ॉल्ट प्रमाणीकरण SuccessHandler है। इसके बाद नीचे दिखाए गए नामस्थान का उपयोग करके वायर्ड किया जा सकता है।

<sec:http> 
    <sec:form-login authentication-success-handler-ref="authSuccessHandler"/> 
</sec:http> 
<bean:bean class="example.MyCustomAuthenticationSuccessHandler"/> 

मैं के रूप में यह वसंत सुरक्षा एपीआई से जुड़ा हुआ है ऐसा करने की सिफारिश नहीं होगा और यह है कि जब संभव से बचने के लिए बेहतर है।

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