У меня проблема с фильтром. До этого моя конфигурация была такой:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.anonymous().disable()
.formLogin().disable()
.logout().disable()
.exceptionHandling()
.authenticationEntryPoint(unAuthorizedHandler)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.addFilterBefore(new OncePerRequestFilter() {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
final String requestHeader = jwtTokenProvider.resolveToken(request);
boolean logged = false;
if (requestHeader != null && jwtTokenProvider.validateToken(requestHeader)) {
User user = jwtTokenProvider.getUser(requestHeader);
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(user, null, null);
SecurityContextHolder.getContext().setAuthentication(authentication);
logged = true;
}
if (!logged) {
log.debug("No token found in the header");
}
chain.doFilter(request, response);
}
}, CsrfFilter.class);
}
filterBefore отлично работает с моими всеми определенными маршрутами, но у меня есть другие маршруты, представленные внешним jar, маршруты хороши, но мне нужно, чтобы сначала он прошел через filterBefore.
любой совет, любое предложение.
Спасибо.