AuthenticationManager не связывается

136
05 февраля 2021, 11:00

Есть вот такой вот сервис. Эти 2 штуки не "автоварятся"

@Autowired private AuthenticationManager authenticationManager;

@Autowired private UserDetailsService userDetailsService;

Читал, что можно чрз super.authenticationManager() можно переопределить бин, но у меня не выходит. (Видимо из-за того, что я наследуюсь от интерфейса) Как их "подвязать"?

Весь класс:

@Service
public class SecurityServiceImpl implements SecurityService {
private static final Logger logger = LoggerFactory.getLogger(SecurityServiceImpl.class);
@Autowired
private AuthenticationManager authenticationManager;

@Autowired
private UserDetailsService userDetailsService;
@Override
public String findLoggedInUsername() {
    Object userDetails = SecurityContextHolder.getContext().getAuthentication().getDetails();
    if (userDetails instanceof UserDetails) {
        return ((UserDetails) userDetails).getUsername();
    }
    return null;
}
@Override
public void autoLogin(String username, String password) {
    UserDetails userDetails = userDetailsService.loadUserByUsername(username);
    UsernamePasswordAuthenticationToken authenticationToken =
            new UsernamePasswordAuthenticationToken(userDetails, password, userDetails.getAuthorities());
    authenticationManager.authenticate(authenticationToken);
    if (authenticationToken.isAuthenticated()) {
        SecurityContextHolder.getContext().setAuthentication(authenticationToken);
        logger.debug(String.format("Successfully %s auto logged in", username));
    }
}
}

Answer 1

У тебя вывернуто наизнанку. UserDetailsService должен использоваться менеджером, чтобы разрешить юзеру доступ или запретить, а не наоборот.

@Configuration
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {
  @Autowired
  public initialize(AuthenticationManagerBuilder builder, UserDetailsService userDetailsService) {
    // вот тут можно настроить своего провайдера, напрример
    builder.userDetailsService(userDetailsService); 
  }
}
Answer 2

Эти 2 штуки не "автоварятся"

Что вы имеете ввиду? (конкретно)

Пробовали?

@Configuration
public class Config extends WebSecurityConfigurerAdapter {
    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }
    @Bean
    public UserDetailsService userDetailsService() {
        return super.userDetailsService();
    }
}
READ ALSO
Как развернуть веб приложение?

Как развернуть веб приложение?

Написал я свое первое веб приложение (писал на Spring Boot)Запускаю на localhost - все работает как надо

114
Вынести переменные в метод

Вынести переменные в метод

Подскажите как в даном примере

112
Перемещение персонажа JavaScript

Перемещение персонажа JavaScript

Пишу онлайн игруСейчас используется перемещение персонажа на клетку по которой пользователь кликнул

153
Поведение setInterval для экземпляра класса [дубликат]

Поведение setInterval для экземпляра класса [дубликат]

На звание знатока JS не претендуюПри разработке учебного проекта сталкнулся с непонятной ситуацией

139