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 { ... } });