5

私はグーグルで検索し、数時間にわたって多くの亜種を試しましたが、成功しませんでした. 解決策を見つけるのを手伝ってください。

春のバージョン: 春 3.1

ログインページがあります。ログイン ページは URL パラメータによって異なります。

/login?code=client1

また

/login?code=client2

したがって、client1 と client2 のログイン ページは異なります。

security.xml:

<sec:form-login login-page="/login" default-target-url="/start" authentication-failure-url="/login"/>

したがって、ユーザーが間違った認証を行った場合、私は彼に /login ページを表示します...しかし、ポイントは、対応するコードパラメーターでログインページを表示する必要があることです。

私は何をすべきか?例を教えてください。

事前にどうもありがとう。

更新#1:

FailureHandler クラスを作成しました:

public class GRSAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler implements AuthenticationFailureHandler {

@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) {

}

}

必要な URL にリダイレクトするには、内部に何を記述すればよいですか? 詳細を教えてください。

どうもありがとう!

4

1 に答える 1

7

を使用して、構成された URL にリダイレクトし、リダイレクトされた URL に元のクエリ文字列を追加するSimpleUrlAuthenticationFailureHandler別の実装を行うことができます。RedirectStrategy

public class QueryStringPropagateRedirectStrategy extends DefaultRedirectStrategy {

    public void sendRedirect(HttpServletRequest request,
            HttpServletResponse response, String url) throws IOException {
        String urlWithOriginalQueryString = url + "?" + request.getQueryString();
        super.sendRedirect(request, response, urlWithOriginalQueryString );
    }

}


認証失敗ハンドラー構成

<bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
    <property name="redirectStrategy" ref="queryStringPropagateRedirectStrategy" />
    <property name="defaultFailureUrl" value="/login" />
</bean>

<bean id="queryStringPropagateRedirectStrategy" class="...QueryStringPropagateRedirectStrategy" />
于 2013-06-19T19:25:35.003 に答える