Почему Spring иногда не делегирует запрос контроллеру? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть приложение с Spring 4 и Spring security 3 на базе Jetty.

Только один пользователь может войти в систему с одинаковыми учетными данными.Если кто-то войдет в систему с тем же именем пользователя, предыдущий пользователь автоматически выйдет из системы.Все работает нормально, если приложение делает это само по себе, но иногда у вас возникает задержка, поэтому вам необходимо выполнить любой запрос к серверу на выход из системы.

Однако, если я попытаюсь обновить страницу во время входа в систему с помощью двух разных браузеров, у меня будет только 200 OK ответов без какой-либо информации.Только после следующего обновления у меня будет действительный ответ с информацией внутри.

У меня есть несколько фильтров в security.xml

<http use-expressions="true" entry-point-ref="restAuthenticationEntryPoint">
    <access-denied-handler ref="accessDeniedHandler"/>
    <custom-filter ref="responseFilter" position="FIRST"/>
    <custom-filter ref="httpRequestSessionIdFilter" position="PRE_AUTH_FILTER"/>
    <custom-filter ref="corsFilter" position="HEADERS_FILTER"/>
    <custom-filter ref="preLogoutFilter" before="LOGOUT_FILTER"/>

Я думаю, что проблема где-то после ResponseFilter.В этой ситуации другие пользовательские фильтры не запускаются:

public final class ResponseFilter implements Filter {

@Override
public void init(FilterConfig filterConfig) {
}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain) throws IOException, ServletException {
    ResponseWrapper responseWrapper = new ResponseWrapper((HttpServletResponse) response);
    HttpServletRequest httpRequest = (HttpServletRequest) request;

    chain.doFilter(request, responseWrapper);
    String responseContent = new String(responseWrapper.getDataStream());

Я попытался снова вызвать chain.doFilter, если данные ответа были пустыми, и это работает, но статус ответа и данные были разделены на два разных JSON.

Почему это происходит и как мне этого избежать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...