2016-04-22 21 views
14

こんにちは、私はSpring Securityの初心者です。ログイン、ログアウト、およびセッションタイムアウト機能を開発中です。 thisのドキュメントを参照してコードを構成しました。私のコードは以下のようになります。Spring Securityでセッションを有効にしてセッションのタイムアウトを設定する方法

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

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

public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer { 

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

} 

AbstractSecurityWebApplicationInitializerクラスをオーバーライドまだ私はそれがよさそうだならば、私は、セットアップのセッションタイムアウトする必要があります場合は、私が右やっているかどうかを明確にする必要があります。私は注釈に完全に基づいています。

答えて

6

web.xmlに以下の設定を追加するだけで、上記の問題を解決できました。どんな良い方法も受け入れられるでしょう。

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

あなたがJavaConfigを使用していて、作成できるXMLを使用しない場合HttpSessionListener、その後InitializeronStartup()にリスナーを追加getSession().setMaxInactiveInterval()を使用します。

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

アプリケーションを別の方法で起動する場合に備えて、リスナーをBeanとして追加することもできます。 – Alic

+0

super.onStartup(servletContext);インラインツールでエラーを表示しない – jeevanswamy21

関連する問題