2

アプリケーションでSpringセキュリティ機能を使用していますが、セッションが期限切れになると、すべてのリクエストajaxがログインページであるページlogin.jsp(リダイレクトではなく、http応答で、すべてのhtmlコンテンツを配置します)を返すことがわかりました私のウェブアプリの。アプリで多くの ajax リクエストを使用しましたが、目標はログイン ページではなく 510 などの特定のエラー コードを返すことです。

<session-management session-authentication-strategy-ref="example" /> 

invalid-session-url なしで、invalid-session-url = "" を作成しようとしましたが、機能しません。どうもありがとう

4

1 に答える 1

4

カスタムAuthenticationEntryPointを使用します。

package com.example.spring.security
// imports here

public class AjaxAwareAuthenticationEntryPoint
     extends LoginUrlAuthenticationEntryPoint {

  public AjaxAwareAuthenticationEntryPoint(final String loginFormUrl) {
    super(loginFormUrl);
  }

  @Override
  public void commence(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException authException)
      throws IOException, ServletException {

    if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
      response.sendError(403, "Forbidden");
    } else {
      super.commence(request, response, authException);
    }
  }
}

Bean を定義しentry-point-ref<http>elementのように使用します。

<http entry-point-ref="authenticationEntryPoint">
  <!-- more configuration here -->
</http>

<bean id="authenticationEntryPoint"
   class="com.example.spring.security.AjaxAwareAuthenticationEntryPoint">
 <constructor-arg value="/login.jsp"/>
</bean>
于 2012-06-28T10:40:32.400 に答える