2011-01-14 14 views
4

これより前のI asked Spring Security 2のフォームログインページで元のリクエストURLを取得できる場合は、実際には役に立たないことが分かります私が必要とするのは、フォーム・ログイン・ページへのリダイレクトをリクエスト・パラメータとして組み込むことです。スプリングセキュリティをログインページのクエリ文字列のurlに追加する

<form-login login-page="/login.html" /> 

を、私は/login.html?return_to=/secure.htmlで終わるしたいアクセス/secure.htmlにしてみてください:だから私は持っている場合。

+0

私は、このソリューションを試してみましたが、それは動作します: https://stackoverflow.com/questions/34087954/ログインの際のパスワードの再入力方法 - 照会 - パラメータ - –

答えて

7

:あなたの<フォームログイン>要素に...

authentication-success-handler-ref="simpleUrlAuthenticationSuccessHandler" 

とのように見えるBeanを追加します:あなたが追加する必要がありますAuthenticationEntryPoint。 Spring Security 3.0+の場合、これは通常LoginUrlAuthenticationEntryPointのインスタンスになります。 2.0では対応するクラスはAuthenticationProcessingFilterEntryPointです。

エントリポイントは、要求をキャッシュする責任も持つExceptionTranslationFilterによって呼び出されます。したがって、追加のパラメータを追加した(現在のリクエストURIを含む)ログインページのURLにリダイレクトするカスタムAuthenticationEntryPointを書くことができます。コードは標準実装とほぼ同じでなければなりません。

http名前空間要素のentry-point-ref属性を使用して、カスタムAuthenticationEntryPointを名前空間構成に挿入できます。単純な豆を使用している場合は、ExceptionTranslationFilterに注入します。

+0

これは正解のように聞こえますが、私はこの道を歩いていましたが、何かが私にとってうまくいかないようでした。私は別のショットを与える必要があるように聞こえる。 –

9

spring-security-redirectを使用する必要があります。基本的に、あなたのURLの形式が/login.html?spring-security-redirect=/secure.htmlの場合、春のセキュリティはログインに成功すると自動的にsecure.htmlにリダイレクトされます。

春3.1.x以降、これはもう既定では機能しません。ログインフォームへのリダイレクトがで行われ

<!-- Emulates the functionality of spring security 3.0.x by specifying the targetUrlParameter to be the value it 
    defaulted to in 3.0.x. As of 3.1.x this is null by default with no option to specify in <form-login> --> 
<beans:bean id="simpleUrlAuthenticationSuccessHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler"> 
    <beans:property name="useReferer" value="true"/> 
    <beans:property name="defaultTargetUrl" value="/account"/> 
    <beans:property name="targetUrlParameter" value="spring-security-redirect"/> 
</beans:bean> 
+0

**ログイン後に移動したくない場合は、行きたいそのURLをパラメータとして追加したログインフォーム。 –

+0

素晴らしい!正確に私が探していたもの、ありがとう。 –

0

独自のログインページを使用していて、Raghuramのアプローチを使用する場合は、targetUrlParameterという名前の隠しフィールドをフォームに挿入する必要があります。ご例えば

(すなわち* return_to * URLパラメータを使用して。)それはのようになります。

<input type="hidden" name="spring-security-redirect" value="<c:out value="${param.return_to}" escapeXml="true" />" /> 
関連する問題