6

Spring に基づく Web アプリケーションがあり、Spring Security 3.1 を実装しています。

必要なのは、構成されたセッションタイムアウトが発生したときに、ログインページに自動的にリダイレクトできるようにすることです。多くの jQuery 機能を含む Web ページを実装しているので、自動的にリダイレクトできるようにする必要があります。

現在何が起こっているか、セッションタイムアウトが経過すると、アクションが実行されるまでではありません-ログインページにリダイレクトされるページ送信。

私のspring-security.xml:

<http auto-config="true" disable-url-rewriting="true">
    <intercept-url pattern="/test/user*" access="ROLE_USER, ROLE_ADMIN"  />
    <intercept-url pattern="/test/admin" access="ROLE_ADMIN"  />
    <form-login login-page="/test/login" 
            default-target-url="/test/home" 
            authentication-failure-url="/test/loginfailed" />
    <logout invalidate-session="true" logout-success-url="/test/logout" />
    <!--
    <session-management invalid-session-url="/test/login">
        <concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
    </session-management>
    -->
</http> 

そして、私の web.xml には次のものがあります。

<!-- Web Session Timeout (mins) --> 
<session-config> 
    <session-timeout>10</session-timeout> 
</session-config>   
4

3 に答える 3

0

私が試してみたいこと!することは次のようなものです:

  • http ステータス コード 200 (OK) リダイレクト (303/307) をログイン ページに送信するのではなく、ステータス コード 401 (未承認) などの ajax ハンドラーによって検出できるものを送信するように、Spring セキュリティを構成します。
  • ログインページを表示するなどして、401コード(または使用するもの)を正しく処理する方法でajaxクライアントを構成します
于 2012-10-04T20:50:43.567 に答える
0

このシナリオは、応答ステータスを に設定することで処理されます403。私たちの次のコードlogin.jspはトリックを行います:

<%
    response.setStatus(HttpServletResponse.SC_FORBIDDEN);
%>

短所は、ログイン ページにアクセスすると、ブラウザー コンソールにそのlogin要求が返されたことが表示されること403です。

これが完了すると、ajax 呼び出しが失敗し、ステータスを確認できる失敗状態になり、セッションがタイムアウトしたというメッセージが表示されます。

于 2015-09-26T20:40:15.873 に答える