Here’s how we handled Ajax timeouts with Spring Security.
In your login controller, set response status to 401.
@RequestMapping(value = "login", method = RequestMethod.GET)
public void login(HttpServletResponse response) {
...
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
}
In your Ajax error callback, check for the 401 code and redirect to a page that is not the login page. If we redirect to the login page, Spring Security might go to Ajax request right after login. You can redirect to a secure page to effectively get the login page.
$.post(url, $('#id'))
.success(function(result) {
...
})
.error(function(xhr) {
if (xhr.status == 401) {
window.location = 'home';
} else {
...
}
});