0

こんにちは、struts と jsp を使用してアプリケーションを開発しています。jsp では、Ajax 呼び出しを使用しています。セッション タイムアウト後、ログイン ページにリダイレクトしています。しかし問題は、ログインページに同じdivタグが表示されていることです.私はセッションでユーザーをチェックしているか、jspのjavascriptでチェックしていますが、常にセッションにはuserid値があり、セッションが期限切れになった場合でもnullになることはありません.

4

4 に答える 4

3

2つのこと

  1. web.xmlでウェルカムページをログインページとして構成します
  2. フィルタを作成し、web.xmlで構成します。これは、web.xmlの最初のフィルタである必要があります。
  3. フィルタで、セッションが新しいかどうかを確認し、ユーザーをログインページに誘導する必要があります。そうでない場合は、要求を処理する必要があります。
于 2012-04-24T07:12:10.577 に答える
1

最近、まさにこれについてのチュートリアルを作成しました。多分それは役立つかもしれません。abhi が提案したのと同じ解決策ですが、例があります。

http://classfoundexception.blogspot.com.es/2012/04/how-to-secure-struts-13-application.html

于 2012-04-24T08:49:07.240 に答える
0

To handle Session Timeout/Expire for Ajax Call Request and to dispatch it to login page follows these steps.

1) In Your jsp wherever ajax function are written Set a header before your ajax send request.

req.open("POST", Servlet_PATH, true);
req.setRequestHeader("X-Requested-With", "XMLHttpRequest"); //set header
req.send();

2) In a Filter get the header like this and if session is null send as an Response Error

    httpRequest.getHeader("X-Requested-With");
    if (session == null) {
`if(httpRequest.getHeader("X-Requested-With")!=null && httpRequest.getHeader("X-Requested-With").equals("XMLHttpRequest")){`
        `logger.info("Ajax Expired...");`
                            `((HttpServletResponse)response).sendError(403);` // Response error set
                            `return;`
                        `}}`

3) In jsp whereever ajax code is written check request.readystate and request.state like this

if (req.readyState==4 && req.status==200)
         {
//your logic
}
else if(req.readyState==4 && req.status==403){

             alert("Your Session is Expired.Please Relogin.");
             window.location.href = "<%=request.getContextPath()%>/jsp/login.jsp";
         }
于 2013-12-11T05:09:08.550 に答える
0

新しいリクエストが来るたびに、サーバー側でセッションをチェックして検証する必要があります。また、このタイムアウトは Web サーバーによって処理されます。タイムアウトが発生すると、自動的にサーバーがユーザーを にリダイレクトしますsession logout URL。この構成は、サーバーの conf ファイルで変更できます。

詳細については、これを参照してください

于 2012-04-24T06:37:16.430 に答える