Дано:
Проект на spring. Подключена БД, в ней лежат юзеры, можно их запросить по адресу http://localhost:8080/users/all.
Задача:
Требовать логина при запросе юзеров, но пускать в корень.
Проблема:
Не получается никак настроить свободный доступ к /. Подключил security - теперь все пути выводят форму логина, куда я могу с данными юзеров из БД залогиниться, но никакие из испробованных способов не дают свободно на рут ходить.
Вопрос:
почему такое простое действие сложнее создания БД и АПИ к ней- как мне открыть рут для всех запросов?
В данный момент выглядит так конфигурация:
@Configuration
@EnableWebSecurity
class WebSecurityConfiguration : WebSecurityConfigurerAdapter() {
@Autowired
lateinit var dataSource: DataSource
@Autowired
@Bean
fun passwordEncoder() = NoOpPasswordEncoder.getInstance() as NoOpPasswordEncoder
override fun configure(auth: AuthenticationManagerBuilder) {
auth
.jdbcAuthentication()
.dataSource(dataSource)
.passwordEncoder(passwordEncoder())
}
}
Пробовал настраивать пути по всякому, например так, но, кажется, всё что я пишу просто игнорируется:
override fun configure(http: HttpSecurity) {
http
.csrf().disable()
.anonymous().disable()
.antMatcher("/users/**").authorizeRequests()
//и как только я не пробовал, ничего не меняется
}
Пробовал специальную штуку для игнорирования - она тоже не работает
override fun configure(webSecurity: WebSecurity) {
webSecurity.ignoring().antMatchers("/")
}
или
override fun configure(webSecurity: WebSecurity) {
webSecurity.ignoring().antMatchers("/**")
}
UPD_0:
Вот репозиторий со всем проектом: для запуска и работы надо поставить postgresql и создать там под юзером postgres с паролем testtest БД с именем springbootdb - далее при запуске в БД создана будет таблица с юзерами и туда будет добавлен юзер, под коим можно логиниться с логином test@test.ru и паролем password
У вас были 2 проблемы.
У вас @CompnentScan был настроен так чтобы игнорировал все классы аннотированные @Configuration
excludeFilters = [ComponentScan.Filter(type = FilterType.ANNOTATION, value = [Configuration::class])], это надо было удалить.
Не были нужные зависимости для настройки Security, надо было добавить
compile "org.springframework.boot:spring-boot-starter-security"
и собственно настройка самого spring-security:
override fun configure(http: HttpSecurity) {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/users/**").authenticated()
.antMatchers("/**").permitAll()
.and()
.formLogin()
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости