2011-01-13 17 views
6

मैं अपने वसंत सुरक्षा विन्यास फ़ाइल में घोषित निम्नलिखित हैं (http://www.springframework.org/schema/security/spring-security-2.0.1.xsd) :स्प्रिंग सुरक्षा फार्म प्रवेश पृष्ठ में मूल अनुरोध यूआरएल जाओ

<form-login login-page="/login.html" /> 

क्या वसंत सुरक्षा उपयोगकर्ता को उस पृष्ठ पर रीडायरेक्ट करती है यदि उनके पास सही प्रमाणीकरण प्रमाण-पत्र नहीं हैं। मैं उस पेज का यूआरएल कैसे प्राप्त कर सकता हूं जिसे उपयोगकर्ता प्राप्त करने का प्रयास कर रहा था?

+1

संभवतः संबंधित http://stackoverflow.com/questions/631217/spring-security-how-to-get-the-initial-target-url को – Raghuram

+0

लिंक के लिए धन्यवाद! –

उत्तर

9

मूल अनुरोध SavedRequest ऑब्जेक्ट द्वारा दर्शाया गया है, जिसे SPRING_SECURITY_SAVED_REQUEST_KEY नामक एक सत्र विशेषता के रूप में उपयोग किया जा सकता है।

+0

आपके द्वारा लिंक किए गए दस्तावेज़ों को देखते हुए '3.0 से' कहते हैं। मैं वसंत सुरक्षा 2 का उपयोग कर रहा हूं (जैसा कि प्रश्न में उल्लिखित है)। क्या आप जानते हैं कि यह अभी भी काम करेगा? –

+1

@Adbullah: मुझे लगता है कि वसंत सुरक्षा 2 में यह वही काम करता है: http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/ui/savedrequest/ SavedRequest.html – axtavt

+0

धन्यवाद, दुर्भाग्य से मुझे लगता है कि मैं जो करना चाहता हूं उसके लिए गलत सवाल पूछ रहा हूं, यदि आपके पास मौका है तो नया प्रश्न देखें: http://stackoverflow.com/questions/4696905/make-spring -सुरक्षा-एड--रिटर्न-टू-यूआरएल-इन-द-क्वेरी स्ट्रिंग के लिए: -प्रवेश-पेज –

0

स्प्रिंग सुरक्षा 4

में मूल अनुरोध DefaultSavedRequest वस्तु है, जो SPRING_SECURITY_SAVED_REQUEST नाम के एक सत्र विशेषता के रूप में पहुँचा जा सकता है का प्रतिनिधित्व करती है।

@RequestMapping(value = "/login", method = RequestMethod.GET) 
public String login(HttpSession session) { 
    DefaultSavedRequest savedRequest = (DefaultSavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST"); 
} 
0

मेरे मामले में मैंने ऐसा कुछ किया और यह मेरे लिए काम किया।

@Autowired 
private LoggedUserListener loggedUserListener; 

@Override 
protected void configure(HttpSecurity http) throws Exception { 
http.csrf().disable() 
    .authorizeRequests() 
    .antMatchers("/find/**","/","/Application/**") 
    .access("hasRole('ROLE_USER')") 
    .successHandler(loggedUserListener) 
//some other stuff 
} 



@Component 
public class LoggedUserListener implements AuthenticationSuccessHandler{ 

@Autowired 
private UserRepo userRepo; 

@Override 
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, 
     Authentication authentication) throws IOException, ServletException { 

    HttpSession session = request.getSession(); 
    SavedRequest savedRequest = (SavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST"); 

    if(savedRequest != null) { 

     User u = userRepo.findByUsername(authentication.getName()); 

     u.setLastLogin(new Date()); 
     u.setAccountNonLocked(false); 

     userRepo.save(u); 
     response.sendRedirect(savedRequest.getRedirectUrl()); 
    } 
    } 

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