Не удалось создать компонент AuthenticationManager.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Не удалось создать компонент AuthenticationManager.

Сообщение Anonymous »

Мы пытаемся использовать @PreAuthorize с аутентификацией по токену.
Когда мы пытаемся использовать @PreAuthorize, перед вызовом API появляется всплывающее окно SpringSecurity со страницей входа. Нам не нужна эта страница, поскольку у нас есть собственный процесс аутентификации.
Чтобы пропустить эту страницу, мы добавили
@SpringBootApplication( ignore = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class } ) в нашем основном классе.
После этого страница входа была пропущена, но затем все наши API, когда мы их запускали, выдавали ошибку, что в контексте должна присутствовать аутентификация.
Для этого мы внесли следующие изменения

Код: Выделить всё

@Configuration
public class MethodSecurityConfig extends WebSecurityConfigurerAdapter {

@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}

@Override
public void configure(HttpSecurity http) throws Exception {

http.csrf().disable().addFilter(new AuthFilter(authenticationManagerBean())).authorizeRequests().anyRequest().permitAll();

}

}

@Component
public class AuthFilter implements Filter {

private AuthenticationManager authenticationManager;

public AuthFilter(AuthenticationManager authenticationManager) {
this.authenticationManager = authenticationManager;
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterchain)
throws IOException, ServletException {

final String authorizationHeader = ((HttpServletRequest) request).getHeader("Authorization");
System.out.println("===========Filter called================");

final Authentication authentication = authenticationManager
.authenticate(SecurityContextHolder.getContext().getAuthentication());

System.out.println("===========Authentication================"+authentication);

if (authentication != null && !(authentication instanceof AnonymousAuthenticationToken)
&& authentication.isAuthenticated()) {

// set authentication in security context holder
SecurityContextHolder.getContext().setAuthentication(authentication);

}
filterchain.doFilter(request, response);
}
}
Теперь, когда я получаю сообщение об ошибке, что для AuthenticationManager не существует bean-компонента.
Я пробовал многими другими способами, но bean-компонент не внедряется в фильтре
Можете ли вы это прокомментировать?

Подробнее здесь: https://stackoverflow.com/questions/740 ... nager-bean
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»