Остановить Spring Security SavedDefaultRequest

У нас есть приложение, использующее 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 или проверить, установлен ли он, и не обновлять его? Можно ли что-то сделать на уровне страницы? Или я должен сделать это по-другому.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
406
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мой товарищ по команде создал это решение: 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>

Эти изменения решили проблему в нашем приложении.

Другие вопросы по теме