我正在尝试开发Spring Boot Web应用程序并使用Spring Security Java配置对其进行保护。
按照Spring博客中的建议,将我的静态Web资源放置在“ src / main / resources / public ” 中后,我就可以获得静态资源。即 https://localhost/test.html 在浏览器中点击确实提供html内容。
https://localhost/test.html
在启用Spring Security之后,访问静态资源URL需要身份验证。
我的相关的Spring Security Java配置看起来像这样:
@Override protected void configure(HttpSecurity http) throws Exception { // @formatter:off http. authorizeRequests() .antMatchers("/","/public/**", "/resources/**","/resources/public/**") .permitAll() .antMatchers("/google_oauth2_login").anonymous() .anyRequest().authenticated() .and() .formLogin() .loginPage("/") .loginProcessingUrl("/login") .defaultSuccessUrl("/home") .and() .csrf().disable() .logout() .logoutSuccessUrl("/") .logoutUrl("/logout") // POST only .and() .requiresChannel() .anyRequest().requiresSecure() .and() .addFilterAfter(oAuth2ClientContextFilter(),ExceptionTranslationFilter.class) .addFilterAfter(googleOAuth2Filter(),OAuth2ClientContextFilter.class) .userDetailsService(userService); // @formatter:on }
我应该如何配置 antMatchers 以允许将静态资源放在src / main / resources / public中?
有几件事要注意:
src/main/resources/public
src/main/resources/public/hello.jpg
http://localhost:8080/hello.jpg
这就是为什么您当前的匹配器配置不允许访问静态资源的原因。为了/resources/**工作,您必须将资源放入src/main/resources/public/resources并在处进行访问http://localhost:8080/resources/your- resource。
/resources/**
src/main/resources/public/resources
http://localhost:8080/resources/your- resource
使用Spring Boot时,您可能需要考虑使用其默认值,而不是添加额外的配置。spring开机就会在默认情况下,允许访问/css/**,/js/**,/images/**,和/**/favicon.ico。例如,您可以拥有一个名为的文件src/main/resources/public/images/hello.jpg,而无需添加任何额外的配置,http://localhost:8080/images/hello.jpg无需登录即可访问该文件。您可以在允许对Bootstrap CSS文件进行访问的Web方法安全性示例中看到此操作。无需任何特殊配置。
/css/**
/js/**
/images/**
/**/favicon.ico
src/main/resources/public/images/hello.jpg
http://localhost:8080/images/hello.jpg