gpt4 book ai didi

java - Spring 3.1 : Redirect after login not working

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:53 26 4
gpt4 key购买 nike

我有一个页面有多个指向应用程序中其他页面的链接。当用户访问该网站时,系统页面会显示,即使用户未登录也可以访问。但是,如果用户单击其他链接,期望用户登录,用户将被正确地重定向到登录页面.但是,登录后,用户不会重定向到单击的链接,而是将用户带到系统页面(系统页面是默认目标 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"/>

我尝试使用 authentication-success-handler-ref 属性来引用 SavedRequestAwareAuthenticationSuccessHandler 实例,但是,这也不起作用。

有什么意见吗?

最佳答案

在Spring中,有requestCache(将SavedRequest保存在HttpSession中),它决定了在认证过程中用于保存请求的策略,以便一旦请求可以被检索和重用。用户已通过身份验证。

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

See this example which explains the same concept you are looking for

Good Article which also explains same concept in detail with a little bit different way

SavedRequestAwareAuthenticationSuccessHandler :

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

  • 如果 alwaysUseDefaultTargetUrl 属性设置为 true,则 defaultTargetUrl 将用于目标。 session 中存储的任何 DefaultSavedRequest 都将被删除。

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

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

  • 如果没有找到DefaultSavedRequest,它将委托(delegate)给基类。

关于java - Spring 3.1 : Redirect after login not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19580071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com