jla*_*s62 5 java ajax spring spring-mvc spring-security
我有一个正在运行的 Spring/Java Web 应用程序。在某些页面上,当我注销时,最后发出的请求是 AJAX 调用。因此,当我重新登录时,Spring 将我重定向到 ajax 调用,给我一个充满 json 的浏览器。我的登录成功处理程序扩展了SavedRequestAwareAuthenticationSuccessHandler.
如何控制成功登录后转发到哪个网址?
我的解决方案受到 Rob Winch 答案的启发。不过,在我的场景中,Spring正在保存已X-Requested-With: XMLHttpRequest设置的请求。这些是我不得不忽略的请求。
我创建了一个类作为我的自定义RequestCache类。
@Service("customRequestCache")
public class CustomRequestCache extends HttpSessionRequestCache { //this class (bean) is used by spring security
@Override
public void saveRequest(HttpServletRequest request, HttpServletResponse response) {
if (!"XMLHttpRequest".equalsIgnoreCase(request.getHeader("X-Requested-With"))) {
//request is not ajax, we can store it
super.saveRequest(request, response);
} else {
//do nothing, add some logs if you want
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的 spring 安全配置中:
<http>
<request-cache ref="customRequestCache" />
</http>
Run Code Online (Sandbox Code Playgroud)
使用此自定义请求缓存类后,将不再存储 ajax 请求。
| 归档时间: |
|
| 查看次数: |
1571 次 |
| 最近记录: |