Cannot invoke FilterUtil.generateToken because "this.filterUtil" is null
Столкнулся с проблемой, что по всей видимости при создании конструктора AuthenticationFilter в security config'е контекст не понимает какой конструктор использовать и передает вместе с AuthenticationManager FilterUtil = null, убрать all args в AuthenticationManager я так же не могу, так как мне нужно автовайрить FilterUtil
фильтер
@RequiredArgsConstructor
@AllArgsConstructor
public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter {
private final AuthenticationManager authenticationManager;
private FilterUtil filterUtil;
@Override
public Authentication attemptAuthentication(HttpServletRequest request,
HttpServletResponse response) throws AuthenticationException {
return authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(
request.getParameter("username"),
request.getParameter("password"))
);
}
@SneakyThrows
@Override
protected void successfulAuthentication(HttpServletRequest request,
HttpServletResponse response,
FilterChain chain,
Authentication authentication) throws IOException {
UserDetailsImpl user = (UserDetailsImpl) authentication.getPrincipal();
Map<String, String> tokens = filterUtil.generateToken(
request.getRequestURL().toString(), user);
response.setContentType(APPLICATION_JSON_VALUE);
new ObjectMapper().writeValue(response.getOutputStream(), tokens);
}
}
ошибка в этой строчке -
Map<String, String> tokens = filterUtil.generateToken(
request.getRequestURL().toString(), user);
конфигурация security с конструктором AuthenticationFilter
@Override
protected void configure(HttpSecurity http) throws Exception {
AuthenticationFilter authenticationFilter =
new AuthenticationFilter(authenticationManager());
authenticationFilter.setFilterProcessesUrl("/api/user/login");
http
.csrf().disable()
.sessionManagement().sessionCreationPolicy(STATELESS)
.and()
.addFilter(authenticationFilter)
.addFilterBefore(new AuthorizationFilter(), UsernamePasswordAuthenticationFilter.class);
}
ошибка
Cannot invoke "com.microservice.messenger.auth.filter.util.FilterUtil.generateToken(String, com.microservice.messenger.auth.service.impl.UserDetailsImpl)" because "this.filterUtil" is null
at com.microservice.messenger.auth.filter.AuthenticationFilter.successfulAuthentication(AuthenticationFilter.java:52) ~[main/:na]