last day (15 days later) » 

13:15
1
Q: Настройки адресов в Spring Security игнорируются

ЮрийСПбДано: Проект на spring. Подключена БД, в ней лежат юзеры, можно их запросить по адресу http://localhost:8080/users/all. Задача: Требовать логина при запросе юзеров, но пускать в корень. Проблема: Не получается никак настроить свободный доступ к /. Подключил security - теперь все пути выводят...

И вообще всё и вся игнориуется. Я накопировал сотни строк кода из разных примеров пока пробовал авторизацию настроить и вчера выяснил, что если их все удалить - просто ничего не меняется. В итоге за форму логина отвечает единственный класс с 4 строками кода. А всё остально просто игнорируется. Никакие сервера ресурсов или авторизации просто не поднимаются.
Разделить функционал на контроллеры с разным маппингом? К примеру список мы можем увидеть, а вносить правки уже нужна будет аутентификация с ролями @AuthorizeRequest('hasRole("ADMIN")')
@GenCloud, мне ваши слова мало о чём сказали) Я когда БД и АПИ запилил за час я был в восторге от спринга - пара строчек и всё работает. А вот с авторизацией уже неделю вожусь и всё что удалось сделать - формочку входа на сайт и всё. Документацию, примеры, en-SO весь перерыл - всё, вроде, понятно, но ничего не работает( Казалось бы простая задача - не паролить рут, а и её не сделать(
@GenCloud, я пробовал в configure(http: HttpSecurity) роли ставить, разрешать путь к руту для всех и прочае. Но, кажется, код в методе просто игнорируется. Какой бы код я не пробовал - рут всегда требует логина.
Насколько я понял документацию, аннотация @EnableWebSecurity как раз всё паролит, а в методах configure(http: HttpSecurity) и configure(webSecurity: WebSecurity) можно настроить исключения и доп. поведение. Но они просто не работают(((
Не совсем понятно - требовать аутентификацию при показе списка, но давать доступ руут при подключении (что Вы имеете ваиду)?
@GenCloud, я имею в виду корень сайта. Т.е. http://localhost:8080/ чтобы виден был без необходимости авторизации. А http://localhost:8080/users/ уже требовал логиниться
13:15
Аааа, тфу, смотрите - http.csrf().disable().antMatches("/").permitAll().anyRequest‌​().authenticated(‌​) CSRF отключать - плохая практика.
Удалите стрoку .anonymous().disable()
@GenCloud, ваш вариант не компилируется, я вот так изменил http .csrf().disable() .authorizeRequests() .antMatchers("/").permitAll().anyRequest().authenticated() - и ничего не изменилось(
@GVArt, пробовал убирать - никаких изменений.
Собственно добавляю я метод с кодом или нет - изменений никаких нет.
@ЮрийСПб создайте gist на github или дайте ссылку на репозиторий, поможем
Уберите authorizeRequest(). Не с компьютера так, что пишу на коленке. А у Вас контроллер маппит корень? (@RequestMapping(value ="/", method = {GET, HEAD})
@GVArt, гистами не пользовался, показалось, что они неудобны. Создал репозиторий, ссылку в вопрос в конец добавил - будет круто, если посмотрите)
@GenCloud, я по всякому пробовал, но не компилится - там надо какие-то не очень понятные конструкции из вызовов делать( Да, есть конроллер для / - он просто выводит Привет. Я в вопрос добавил ссылку на репозиторий - может сможете что-то в коде увидеть)
13:15
@ЮрийСПб посмотрите pull request
@GVArt @GenCloud Пожалуйста, напишите ваши рекомендации в виде ответа на сайте!

last day (15 days later) »