Дано:
Проект на 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()
}
Программа упрощенный калькуляторЕсть метод в котором сравниваются приоритеты математических операторов, но я не знаю как это сделать
Требуется чтобы массив содержал слова и знаки предложения на одном уровне, вроде:
Я написал программу при помощи Java, в которой есть главное окно для набора текста, окно для вывода сообщений и ошибок, а так же кнопка запуститьСвоеобразная...