Я пытаюсь обезопасить демонстрационное приложение с помощью аутентификации на основе токенов jwt. Мой пример использования: у меня два типа пользователей: один - учитель, который является администратором, а другой - ученик, который является обычным пользователем.
Я хочу настроить безопасность для учителя и ученика отдельно. У меня есть разные источники для аутентификации пользователей - один для учителей и один для обычных пользователей. Если настроены два webseconfigadapters.
В StudentWebConfigAdapter
config() {
http.antMatcher("/student/getmarks/{id}")
.authorizeRequests().anyRequest().hasRole("USER")
}
@Bean("studentAuth")
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
В TeacherWebConfigAdapter
config() {
http.antMatcher("/student/**","/teacher/**")
.authorizeRequests().anyRequest().hasRole("ADMIN")
}
@Bean("teacherAuth")
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
Как настроить отдельный менеджер проверки подлинности для обоих. Я попытался создать отдельный бин с разными именами. он выдаёт ошибку, аутентификация менеджера должна быть только одна.
Expecting to only find a single bean for type interface org.springframework.security.authentication.AuthenticationManager, but found [studentAuth, teacherAuth]