5

ログインリンクをクリックしたページにユーザーをリダイレクトしようとしています。(認証されていないユーザーの場合、ページは読み取り専用ですが、ログインしているユーザーの場合は書き込み可能です。) ログイン後に、ユーザーを元の場所に戻すにはどうすればよいですか?

このリンクを使用してログインページにユーザーに送信しています: /spring_security_login?redirect=/item5。ログイン後、ユーザーがページにリダイレクトされることを期待してい/item5ます。ただし、常にページにリダイレクトされ/ます。

私が使用している構成は次のとおりです。

<http use-expressions="true">
    <intercept-url pattern="/**" access="permitAll" />
    <form-login authentication-success-handler-ref="simpleUrlAuthenticationSuccessHandler"/>
</http>
<beans:bean id="simpleUrlAuthenticationSuccessHandler"
    class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler">
    <beans:property name="defaultTargetUrl" value="/"/>
    <beans:property name="targetUrlParameter" value="redirect"/>
</beans:bean>

思うようtargetUrlParameterに取り上げられていないようです。Spring Security 3.1.4 を使用しています

4

6 に答える 6

2

SimpleUrlAuthenticationSuccessHandlerSavedRequestAwareAuthenticationSuccessHandlerに変更して、満足してください。

于 2014-04-13T10:33:44.097 に答える
1

SavedRequestAwareAuthenticationSuccessHandlerの代わりに使用しSimpleUrlAuthenticationSuccessHandlerます。

ページの URL がブラウザーで入力された場合でも、refererはキャプチャーされず、SavedRequestAwareAuthenticationSuccessHandlerによってキャプチャーされた以前の URL を使用しExceptionTraslationFilterます。

http://docs.spring.io/spring-security/site/docs/3.0.x/reference/core-web-filters.html#form-login-flow-handlinghttp://docs.spring.ioを読む/autorepo/docs/spring-security/3.2.4.RELEASE/apidocs/org/springframework/security/web/authentication/SavedRequestAwareAuthenticationSuccessHandler.html

于 2015-03-03T08:46:07.547 に答える
1

この行のためです:

<beans:property name="defaultTargetUrl" value="/"/>

その行を削除して、もう一度やり直してください。

于 2013-07-22T03:46:29.963 に答える
0

次の一般的なソリューションは、通常のログイン、Spring Social ログイン、または他のほとんどの Spring Security フィルターで使用できます。

Spring MVC コントローラーで、読み取り専用ページをロードするときに、ユーザーがログインしていない場合はセッションにページへのパスを保存します。XML 構成で、デフォルトのターゲット URL を設定します。例えば:

Spring MVC コントローラーでは、リダイレクト メソッドがセッションからパスを読み取り、redirect:<my_saved_page_path>.

そのため、ユーザーがログインすると、ページに送信され/redirect、最後にアクセスしたページにすぐにリダイレクトされます。

于 2013-07-23T01:47:24.040 に答える