Сопоставление ресурсов в Spring Boot 2 - PullRequest
0 голосов
/ 07 марта 2020

Я использую Spring Boot 2.2.2.RELEASE для обслуживания Интернета и хочу разрешить stati c содержимое моей страницы, например css для каждого пользователя, а также для неаутентифицированных.

enter image description here

Как я понимаю, ресурсы в папке static сопоставляются с root, поэтому при доступе к localhost:8080/css/sobre.css я должен получить доступ к моему css файлу. Но вместо этого меня перенаправляют на страницу входа в систему.

Это нормально, я знаю, что в Spring Boot 1.5 ресурсы под stati c были разрешены по умолчанию, но изменилось .

Итак, я использую пользовательский WebSecurityConfigurerAdapter, чтобы разрешить эти пути, поэтому он выглядит так:

    @Override
    protected void configure(final HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/css/**").permitAll()
                .antMatchers("/login*").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .and()
                .logout()
                .logoutUrl("/perform_logout")
                .deleteCookies("JSESSIONID");
    }

Но когда я go на страницу, которая имеет ссылку на ресурс, я получаю :

No mapping for GET /css/sobre.css

enter image description here

И произвольное отображение каждого ресурса в фактический файл не является правильным подходом.

Так что я не Я действительно знаю, как это сделать. Что мне не хватает? Я просто хочу:

 <link rel="stylesheet" href="/css/sobre.css" />

Спасибо.

1 Ответ

0 голосов
/ 08 марта 2020

Мне пришлось сделать три вещи:

  • Удаление @EnableWebMvc из основного класса.

  • Добавление исключения к этому пути в Адаптер безопасности:

    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers("/css/**");
    }
    

    ИЛИ с HttpSecurity:

    .antMatchers("/css/*").permitAll()
    
  • В случае, если ваша папка stati c не называется "stati c ", установив путь root к папке ресурсов:

    spring.resource.static-locations= "classpath:/publicfiles/"

...