У нас есть приложение, использующее Spring Security (версия 4.0.3.RELEASE). Когда пользователь переходит на конечную точку https://system.com/app/accountSummary?accountId=230, он перенаправляется на другую страницу, и страница перенаправления устанавливается, как мы видим в журнале:
DefaultSavedRequest added to Session: DefaultSavedRequest[http://system.com/app/accountSummary?accountId=230]
Затем мы перенаправляем их на главную страницу. Когда наш пользователь щелкает для входа в систему, он сбрасывает DefaultSavedRequest. В логах видим это: DefaultSavedRequest added to Session: DefaultSavedRequest[http://system.com/app/mainpage]
После правильного входа пользователя в систему Spring Security возвращает его на главную страницу, а не на экран учетной записи, который они хотели.
Есть ли способ остановить обновление DefaultSavedRequest или проверить, установлен ли он, и не обновлять его? Можно ли что-то сделать на уровне страницы? Или я должен сделать это по-другому.




Мой товарищ по команде создал это решение: AuthenticationPoint.java
SavedRequest savedRequest = null;
if (request.getSession().getAttribute(ORIG_SAVED_REQUEST_URL) != null){
saveURL = request.getSession().getAttribute(ORIG_SAVED_REQUEST_URL).toString();
savedRequest = (SavedRequest) request.getSession().getAttribute(ORIG_SAVED_REQUEST);
request.getSession().setAttribute(ORIG_SAVED_REQUEST_URL, saveURL);
request.getSession().setAttribute(ORIG_SAVED_REQUEST, savedRequest);
request.getSession().setAttribute(SPRING_SECURITY_SAVED_REQUEST, savedRequest);
logger.debug("Session Variable ORIG-SAVED-REQUEST = {}",savedRequest.getRedirectUrl());
}
Затем в Controller.java
if ((request != null) && (request.getSession() != null) &&
(request.getSession().getAttribute(SPRING_SECURITY_SAVED_REQUEST) != null) ){
savedRequest = (SavedRequest) request.getSession().getAttribute(SPRING_SECURITY_SAVED_REQUEST);
request.getSession().setAttribute(ORIG_SAVED_REQUEST_URL, savedRequest.getRedirectUrl());
request.getSession().setAttribute(ORIG_SAVED_REQUEST, savedRequest);
logger.debug("Session Variable ORIG-SAVED-REQUEST = {}",savedRequest.getRedirectUrl());
}
Затем он добавил это в XML-код безопасности Spring:
<property name = "alwaysUseDefaultTargetUrl"><value>false</value></property>
Эти изменения решили проблему в нашем приложении.