Задать вопрос
@SankaSanka

Как настроить WebSecurityConfig правильно?

Вход в приложение свободный. Хочу сделать чтоб вход на страницы админа /adminPageProduct /adminPageUser и пр. был только с ролью ADMIN.

Но меня на админовские страницы не пропускает и кидает на страницу запрета входа. С любой ролью. Роли определяются и передаются нормально на страницу. Помогите пожалуйста, в чем моя ошибка?

.csrf().disable()            
        .authorizeRequests()
                    .antMatchers("/","/security/registration").permitAll()
                    .antMatchers("/admin*").hasRole(Role.ADMIN.toString())   
                    .anyRequest()
                    .authenticated()
                .and()
                    .formLogin()
                    .loginPage("/security/login")
                    .defaultSuccessUrl("/")
                    .permitAll()
                .and()
                    .logout()
                    .logoutUrl("/security/logout")
                    .invalidateHttpSession(true)
                    .clearAuthentication(true)
                    .deleteCookies("JSESSIONID")
                    .permitAll()
				.and()
				.exceptionHandling().accessDeniedPage("/errors/accessDenied");


и если она не тут то где можно поискать?
  • Вопрос задан
  • 252 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Приветствую!
1)
Хочу сделать чтоб вход на страницы админа /adminPageProduct /adminPageUser

наверное, лучше сделать общий префикс для админ панели, что-то типа /admin/** и на этом уровне ограничивать доступ, чем перечислять каждую ссылку в настройках конфигурации. А урл делать следующей структуры:/admin/products /admin/users. Вам же в любом случае нужно закрыть доступ ко всей админке

Мне кажется, что проблема у вас может быть тут:
.antMatchers("/admin*")
Других явных проблем не вижу, если все остальное настроено корректно
Ответ написан
Комментировать
@SankaSanka Автор вопроса
.antMatchers("/admin/**").hasRole(Role.ADMIN.toString())

спасибо, но не помогло. Теперь пропускает с любой ролью на эти страницы, лишь бы авторизован был(

а если эту строчку убираю и на уровне контроллера прописываю
@PreAuthorize("hasRole('ADMIN')")

то вообще ни с какой ролью не пропускает. Проблема именно в понимании Роли спрингом. И непонятно где это чинить(
В базе 2 юзера один с ролью АDMIN второй с USER

вот мой гит - https://gitlab.com/KirillSv/ShopSpring/-/tree/mast...

буду благодарен за любые идеи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы