Spring 3.1:登录后无法正常重定向

dev*_*ang 6 java spring-3

我有一个页面,其中包含指向应用程序中其他页面的多个链接.当用户访问网站时,显示系统页面,即使用户未登录也可以访问.但是,如果用户点击其他链接,则需要用户登录,用户被正确地重定向到登录页面.但是,登录后,用户不会被重定向到单击的链接,而是将用户带到系统页面(系统页面是默认目标URL).

这是spring配置文件的片段 -

<logout logout-url="/logout"
    logout-success-url="/login"
    invalidate-session="true" />

<form-login login-page="/login"
    login-processing-url="/j_security_check"

    always-use-default-target="false"
    authentication-failure-url="/login?failure=true"
    username-parameter="username"
    password-parameter="password"/>
Run Code Online (Sandbox Code Playgroud)

我尝试使用authentication-success-handler-ref属性来引用一个SavedRequestAwareAuthenticationSuccessHandler实例,但是,它也没有用.

有什么投入?

Sat*_*ani 5

在Spring中,requestCache(在HttpSession中存储SavedRequest)确定在身份验证过程中用于保存请求的策略,以便在用户进行身份验证后可以检索并重用该策略.

因此,当用户请求打开页面但该页面需要用户登录时,您必须存储该请求requestCache,一旦身份验证成功,您必须获取已存储在requestCatch中的先前请求并重定向用户对该请求以下信息可帮助您实现此目的.

请参阅此示例,该示例解释了您正在寻找的相同概念

好的文章也用一点点不同的方式详细解释了相同的概念

SavedRequestAwareAuthenticationSuccessHandler:

在您的情况下,您必须使用身份验证成功策略,该策略可以使用可能已由ExceptionTranslationFilter存储在会话中的 DefaultSavedRequest.当拦截这样的请求并且需要认证时,存储请求数据以在认证过程开始之前记录原始目的地,并且当重定向到相同URL时允许重建请求.如果适用,此类负责执行重定向到原始URL.

  • 如果alwaysUseDefaultTargetUrl属性设置为true,defaultTargetUrl则将用于目标.DefaultSavedRequest存储在会话中的任何内容都将被删除.

  • 如果targetUrlParameter已在请求中设置,则该值将用作目标.任何DefaultSavedRequest将再次被删除.

  • 如果DefaultSavedRequest在RequestCache中找到a (由在ExceptionTranslationFilter开始身份验证过程之前记录原始目标而设置),则将对该原始目标的Url执行重定向.DefaultSavedRequest当收到重定向的请求时,该对象将保持缓存并被拾取(请参阅参考资料SavedRequestAwareWrapper).

  • 如果DefaultSavedRequest找不到,它将委托给基类.