2016-09-08 16 views
0

Я пытаюсь загрузить Spring Boot 1.4 и Thymeleaf 2. Я хочу защитить свое приложение. Это моя конфигурация безопасности:Spring Boot 1.4 и Thymeleaf 2 Безопасность

@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/", "/resources/static/**").permitAll() 
       .anyRequest().authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .and() 
      .logout() 
       .permitAll(); 
    } 
} 

Это мой MVC контроллер:

@Configuration 
public class MvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/index").setViewName("index"); 
     registry.addViewController("/").setViewName("index"); 
     registry.addViewController("/login").setViewName("login"); 
    }  
} 

Однако, когда я пытаюсь получить доступ к localhost:8080 он показывает индекс страницы без CSS, JS! Когда я вручную регистрируюсь через localhost:8080/login.html, все работает нормально. Я подчиняюсь соглашению интеграции Spring и Thymeleaf, а статические ресурсы находятся под /resources/static и шаблонами под /resource/templates.

Что такое недостающий пункт для меня?

EDIT:

Он работает с таким образом:

http 
     .authorizeRequests() 
      .antMatchers("/css/**").permitAll() 
      .antMatchers("/js/**").permitAll() 
      .anyRequest().authenticated() 
      .and() 
     .formLogin() 
      .loginPage("/login") 
      .permitAll() 
      .and() 
     .logout() 
      .permitAll(); 

Однако, я должен добавить все папки в статических ресурсов с таким образом? Кажется, я что-то пропустил.

+0

Это странно, но это работает без дополнительной настройки, когда вы помещаете свои файлы css и js в 'src/main/resources/static/resources' – baao

ответ

1

Вы должны добавить CSS и JavaScript файлы src/main/webapp

Теперь дается ваша структура выглядит следующим образом:

webapp 
|__css/myStyles.css 
|__js/myjs.js 
|__images/myImage.gif 
|__WEB-INF 

Добавить это в конфигурации системы безопасности

@Override 
public void configure(WebSecurity security) { 
    security.ignoring().antMatchers("/css/**", "/fonts/**", "/libs/**", "/js/**", "/images/**"); 
} 
+0

Должен ли я добавлять все папки по одному? Я думаю, что я мог бы использовать подстановочный знак, поскольку статические файлы в папке «resources» - это соглашение для spring-thymeleaf. – kamaci

+0

, если вы создаете папку ресурсов под webapps и добавляете в нее все эти папки, то просто добавление «/ recources/**» в antMatchers также должно работать. – GreyGoose

+0

Нет, не следует. Доступ к ресурсам осуществляется через '/ css','/js' и т. Д., Когда вы получаете доступ из пользовательского интерфейса, даже если они находятся под ресурсами. Spring перехватывает в соответствии с вычисленными URL-адресами (к ним не доступны по пути '/ static', даже если они находятся под этой папкой. Это было скрыто при запуске пользовательского интерфейса). – kamaci

Смежные вопросы