Миграция с фильтра на перехватчик приводит к ошибке 403 - PullRequest
1 голос
/ 14 марта 2019

В моем приложении Spring Boot я обрабатываю JWT со следующим Filter:

(нерелевантный код для краткости опущен)

@Component
public class JwtFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(
            HttpServletRequest request, HttpServletResponse response,
            FilterChain filterChain) throws ServletException, IOException {

        // processing the JWT from the request

        Authentication auth =
            new UsernamePasswordAuthenticationToken(username, password, roles);
        SecurityContextHolder.getContext().setAuthentication(auth);

        filterChain.doFilter(request, response);
    }
}

Это прекрасно работает, но я бы хотел перенести эту функцию на перехватчик, поэтому я просто добавил ту же логику в HandlerInterceptor:

@Component
public class JwtInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(
            HttpServletRequest request, HttpServletResponse response,
            Object handler) throws Exception {

        // processing the JWT from the request

        Authentication auth =
            new UsernamePasswordAuthenticationToken(username, password, roles);
        SecurityContextHolder.getContext().setAuthentication(auth);

        return true;
    }
}

Но в этом случае я всегда получаю 403 Запрещенного ответа на мои запросы.

Я отладил JwtInterceptor, и, похоже, он работает правильно.

preHandle() полностью выполнен, setAuthentication() вызывается с правильным параметром auth и функция возвращает true.

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

Буду очень признателен за любой совет, как решить эту проблему (или даже просто как выяснить, в чем может быть проблема).

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