有没有办法访问从 Spring MVC 控制器解析的 URL - 例如
@RequestMapping("/{language}/news/{articleId}")
public String newsPage(...) {
}
决议:
/en/news/63421
我想将其与会话一起存储,以便跟踪上次访问的地方。这里的动机是如果页面是安全的,登录过滤器就会发挥作用,我们已经使用了
SavedRequestAwareAuthenticationSuccessHandler
将用户路由回他们尝试访问的页面。
但是,如果他们正在查看不安全的页面并选择使用从屏幕顶部(页面的菜单栏)下拉的表单登录,则“最后一页”似乎是登录表单,因此成功处理程序会将它们放回根上下文。
我想拦截控制器调用并在会话中存储一个 URL,覆盖 SavedRequestAwareAuthenticationSuccessHandler 以允许我们修改 RequestCache,然后让 Spring 在登录成功时重定向。
理想情况下,我们希望有一种通用的方式在所有控制器上执行此操作,但不确定是否有一个过滤器可以用来处理这个问题 - 过滤请求会产生各种噪音,例如 css、js、图像和 html 片段页面,所以我们重新希望有人知道一种仅使用控制器本身来执行此操作的方法。