भूमिकाओं के आधार पर लक्ष्य यूआरएल निर्धारित करने का सबसे अच्छा तरीका नीचे दिखाए गए अनुसार आपकी वसंत सुरक्षा कॉन्फ़िगरेशन में एक लक्षित यूआरएल निर्दिष्ट करना है। यह स्प्रिंग 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"/>
मैं के रूप में यह वसंत सुरक्षा एपीआई से जुड़ा हुआ है ऐसा करने की सिफारिश नहीं होगा और यह है कि जब संभव से बचने के लिए बेहतर है।
स्रोत
2011-11-30 14:36:52