Как активировать проверку на роли в spring mvc + spring boot + spring security

182
29 апреля 2018, 22:45

Нужно заблокировать доступ к некоторым роутам в зависимости от роли. Пересмотрел около 5-7 гайдов по Spring MVC Security, роуты blog/{id}, blog/new должны быть доступны только админу, однако у меня на эти роуты может заходить любой, даже не авторизованный пользователь.

Авторизация работает правильно, роли подтягиваются в объект principal - проверял отладкой. Пробовал и с hasRole('ROLE_ADMIN'), и c hasAuthority('ROLE_ADMIN') - оба варианта игнорируются.

Думаю, возможно где-то нужно что-то включить, чтобы antMatchers().access() работал?

 @Override
 protected void configure(HttpSecurity http) throws Exception {
     http.csrf().disable();
     http
         .authorizeRequests()
         .antMatchers("/", "/blog", "/blog/{id}", "/author", "/account").permitAll()
         .antMatchers("/blog/edit/{blogId}", "/blog/new").access("hasAuthority('ROLE_ADMIN')")
         .and()
         .exceptionHandling().accessDeniedPage("/403")
         .and()
            //form login, logout

Так проверял наличие ролей у авторизованного пользователя

@GetMapping("/userInfo")
public String getUserInfo(Model model, Principal principal) {
    String userName = principal.getName();
    System.out.println("User name: " + userName);
    User loginUser = (User)((Authentication)principal).getPrincipal();
    String userInfo = WebUtils.toString(loginUser); // возвращает роли склеенные через запятую, в данном случае - ROLE_ADMIN
    System.out.println(userInfo);
    model.addAttribute("userInfo", userInfo);
    return "userInfoPage";
}

Тем не менее на защищённые роуты в моём случае может зайти любой, в т.ч. и не авторизованный пользователь - т.е. вообще фильтры на роуты не работают.

READ ALSO
Проблемы с подключением к MySql 8, через Intellij Idea

Проблемы с подключением к MySql 8, через Intellij Idea

После обновления jdbc драйвера в Intellij Idea, выскакивает такая ошибка:

162
Как получить ответ из броадкаста??

Как получить ответ из броадкаста??

Работаю с блютузомПрежде чем получить список доступных устрйств проверяю на то что включен ли блютуз

166
Mvp + The Clean Architecture (Чистая Архитектура) куда отнести Broadcast Receiver?

Mvp + The Clean Architecture (Чистая Архитектура) куда отнести Broadcast Receiver?

Добрый день к какому слою(layer) BroadcastReceiver в Mvp + The Clean Architecture (Чистая Архитектура) и где его разместить в структуре проекта???

168
Немогу запустить проект glassfish + IntelliJ IDEA

Немогу запустить проект glassfish + IntelliJ IDEA

Питаюсь подключить glassfish к IntelliJ IDEA но при запуске проекта возникает такая ошибка:

334