Spring Security Как отображать все страницы кроме

133
24 мая 2019, 10:30

Столкнулся со следующей проблемой. Хочу реализовать отображение всех страниц для не авторизированных пользователей кроме страницы accaunt. Никак не получается, подскажите пожалуйста. Отображает все страницы, а блокировки нет на страницу accaunt.

@Configuration
@EnableWebSecurity
public class ConfigSecurity extends WebSecurityConfigurerAdapter{
//    @Bean
//    public UserDetailsService userDetailsService() {
//        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
//        manager.createUser(User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build());
//        return manager;
//    }
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("user").roles("USER");
        auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN");
        auth.inMemoryAuthentication().withUser("superadmin").password("superadmin").roles("SUPERADMIN");
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
        http.authorizeRequests()
            .antMatchers("/**").permitAll()
            .antMatchers("/resources/**").permitAll() 
            .antMatchers("/accaunt").access("hasRole('ROLE_USER')")
            .antMatchers("/admin").access("hasRole('ROLE_SUPERADMIN')")  
            .anyRequest().authenticated()
        .and()
            .formLogin().defaultSuccessUrl("/", false)
//            .loginPage("/login")
            .permitAll()
        .and()
            .logout()
            .permitAll();

    }
}
Answer 1

FilterSecurityInterceptor

Паттерны проверяются в том порядке, в котором они объявлены. То есть, если у вас объявлено:

.antMatchers("/**").permitAll()
.antMatchers("/accaunt").access("hasRole('ROLE_USER')")

это значит, что первый паттерн будет перекрывать второй, и путь "/accaunt" не будет защищен. Более специфичные паттерны должны быть объявлены раньше, чем более общие:

.antMatchers("/accaunt").access("hasRole('ROLE_USER')")
.antMatchers("/**").permitAll()
READ ALSO
JAVA,Как сделать , чтоб ID начинался с 1000 mysql?

JAVA,Как сделать , чтоб ID начинался с 1000 mysql?

Делаю проект на java добавления студентов в бдУ меня есть уже готовая таблица

112
Нужна реализации задания + проверка кода [закрыт]

Нужна реализации задания + проверка кода [закрыт]

В общем, есть задание: Напишите консольную программу, которая составляет 5-ти дневное расписание занятий для одной группы на основе введенных...

90
Java получение дат прошлой недели

Java получение дат прошлой недели

Подскажите, пожалуйста, как в java правильно и просто получить список будних дней между датами? С например, на вход в метод кидаем Date(1211

74
Как передать интент в уже запущенный сервис?

Как передать интент в уже запущенный сервис?

Нашел код запуска сервиса и отправки значения в него:

112