2016-04-22 14 views
14

में सत्र और सेट सत्र समय समाप्ति को कैसे सक्षम करें हाय मैं वसंत सुरक्षा के लिए नया हूं, मैं लॉगिन, लॉगआउट और सत्र टाइमआउट सुविधा पर काम कर रहा हूं। मैंने this दस्तावेज़ का संदर्भ देकर अपना कोड कॉन्फ़िगर किया है, मेरा कोड नीचे दिखता है।वसंत सुरक्षा

@Override 
    protected void configure(HttpSecurity http) throws Exception { 

     http.authorizeRequests().antMatchers("/admin/**") 
      .access("hasRole('ROLE_USER')").and().formLogin() 
      .loginPage("/login").failureUrl("/login?error") 
       .usernameParameter("username") 
       .passwordParameter("password") 
       .and().logout().logoutSuccessUrl("/login?logout").and().csrf(); 
     http.sessionManagement().maximumSessions(1).expiredUrl("/login?expired"); 
    } 

अवहेलना वर्ग AbstractSecurityWebApplicationInitializer

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; 

public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer { 

    @Override 
    public boolean enableHttpSessionEventPublisher() { 
    return true; 
} 

} 

फिर भी मैं स्पष्टीकरण की जरूरत है कि क्या मैं सही कर रहा हूँ, अगर यह अच्छा लग रहा है तो मैं कहाँ सेटअप सत्र टाइमआउट करने की आवश्यकता है। मैं इसे पूरी तरह से एनोटेशन के आधार पर कर रहा हूं।

उत्तर

6

मैं केवल web.xml में नीचे कॉन्फ़िगर जोड़कर समस्या को हल करने में सक्षम था। कोई बेहतर तरीका स्वीकार किया जाएगा।

<session-config> 
    <session-timeout>20</session-timeout> 
</session-config> 
9

आप JavaConfig उपयोग कर रहे हैं और XML का उपयोग आप बना सकते हैं नहीं करना चाहते हैं एक HttpSessionListener और getSession().setMaxInactiveInterval(), का उपयोग तो Initializer में onStartup() में श्रोता जोड़ने: फिर

public class SessionListener implements HttpSessionListener { 

    @Override 
    public void sessionCreated(HttpSessionEvent event) { 
     System.out.println("session created"); 
     event.getSession().setMaxInactiveInterval(15); 
    } 

    @Override 
    public void sessionDestroyed(HttpSessionEvent event) { 
     System.out.println("session destroyed"); 
    } 
} 

प्रारंभकर्ता में:

@Override 
public void onStartup(ServletContext servletContext) throws ServletException { 
    super.onStartup(servletContext); 
    servletContext.addListener(new SessionListener()); 
} 
+0

यदि आप अपना आवेदन एक अलग तरीके से शुरू करते हैं तो आप श्रोता को एक बीन के रूप में भी जोड़ सकते हैं। – Alic

+0

super.onStartup (servletContext); यह इंटियालाइज़र में त्रुटि नहीं दिखा रहा है – jeevanswamy21

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