2016-04-22 27 views
14

Merhaba, Spring Security uygulamasında yeniyim, oturum açma, oturum kapatma ve oturum zaman aşımı özelliği üzerinde çalışıyorum. Kodumu this belgesine bakarak yapılandırdım, kodum aşağıda görünüyor.Oturum açma ve oturum açma zaman aşımı Spring Security'de nasıl etkinleştirilir

@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"); 
    } 

geçersiz kılma i sağ yapıyorum olmadığını iyi görünüyor eğer AbstractSecurityWebApplicationInitializer

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

public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer { 

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

} 

Yine ben, açıklığa kavuşturulması gereken sınıf sonra ben kurulum oturum zaman aşımı gereken yere. Tamamen açıklamaya dayanarak yapıyorum.

cevap

6

Yalnızca web.xml dosyasında aşağıdaki yapılandırmayı ekleyerek yukarıdaki sorunu çözebiliyordum. daha iyi bir yol kabul edilecektir.

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

Eğer JavaConfig kullanıyor ve oluşturabilirsiniz XML kullanmak istemiyorsanız bir HttpSessionListener ve sonra Initializer yılında onStartup() yılında dinleyicisi eklemek getSession().setMaxInactiveInterval() kullanın:

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"); 
    } 
} 

Sonra Initializer içinde:

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

Ayrıca, uygulamanızı farklı bir şekilde başlatmanız durumunda, dinleyiciyi de fasulye olarak ekleyebilirsiniz. – Alic

+0

super.onStartup (servletContext); intializörde hata göstermiyor – jeevanswamy21