Проблема конфигурации безопасности Spring MVC: по умолчанию добавлен сопоставитель по умолчанию в начало списка - PullRequest
0 голосов
/ 20 марта 2019

Я настраиваю Spring безопасности в проекте и столкнулся со странной проблемой.
Вот код для конфигурации:

http.authorizeRequests()
            .antMatchers("/assets/**").permitAll()
            .antMatchers("/login").anonymous()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/manager/**").hasRole("MANAGER")
            .antMatchers("/").access("hasRole('admin') or hasRole('manager')")
            .anyRequest().denyAll()
            .and()
            .formLogin()
            .loginPage("/login")
            .usernameParameter("username")
            .passwordParameter("password")
            .and()
            .logout()
            .logoutUrl("/logout")
            .logoutSuccessUrl("/login")
            .and()
            .csrf().disable();

Проблема в том, что часть .anyRequest().denyAll() заканчиваетсякак первый элемент в списке в DefaultFilterInvocationSecurityMetadataSource.requestMap и все запросы отклоняются.Если я изменю его на .anyRequest().permitAll(), все запросы будут разрешены.Если я пропущу .anyRequest(), по умолчанию добавляется значение по умолчанию с authenticated().

Как заставить бит .anyRequest() работать в правильном порядке?

With denyAll() ^^ См. denyAll(), добавленный к началусписок.
Without .anyRequest() ^^ Если я удаляю бит .anyRequest().denyAll(), вместо него добавляется бит по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...