2010-11-24 6 views
3

私はspring framework、apache、tomcat を使用しています。ログインページはスプリングセキュリティ で処理されており、ログインページへの最初のリクエストでユーザーのために新しいセッションが生成されるという問題 があります。デフォルトの動作では、ログインページにアクセスすると新しいセッションが作成され、ログインページに大きな負荷がかかった場合、何もせずにログインページを見ているユーザーが多すぎるため、ここに作成されます。 あなたはちょうど問題について考えていますが、私はそれがまれであることは知っていますが、それはどう対処するのでしょうか?ログインページにアクセスするとセッションが多すぎますか?

答えて

2

私はそれがまれだとは思わない。 1つの可能な溶質は、セッションタイムアウトを最小に設定することです。たとえば5分です。さらに、ユーザーがセッションがすでに存在する場合は、セッションのタイムアウトを増やすためのフィルタを作成できます。したがって、通常のユーザーは30分のセッションタイムアウトを持ち、ユーザーは片側のみを訪問して5分のタイムアウトを持ちます。ここで

は、トリックを用量フィルタである:

public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain chain) throws IOException, ServletException { 

    HttpServletRequest httpRequest = (HttpServletRequest)request; 

    // The false is important, otherwise a new session will be created. 
    HttpSession session = httpRequest.getSession(false); 

    if (session == null) { 
     chain.doFilter(request, response); 
     return; 
    } 

    session.setMaxInactiveInterval(30 * 60); 
    chain.doFilter(request, response); 
} 

もう一つの良いアドバイスは、Googleのボットのようなクローラをフィルタリングすることです。 "Bot Detection"は検索するのに適したキーワードです。

+0

ログインしているユーザーがセッションを既に持っていて、彼が5分間アイドル状態になっている場合、セッションも破棄されますか? –

+0

はい、ユーザーがリクエストを1回だけ行うとします。これ以上の要求があれば、タイムアウトは30 * 60秒に延長されます。 – scheffield

+0

偉大な、私は別のアプリで私が持っていた、別の問題を抱えている、使用時間0と多くのセッションがあります、どのようにもそれらを管理するには? –

関連する問題