我有一个独立的Spring Boot应用程序,其模板在/ src / main / resources / templates中,而静态内容在/ src / main / resources / static中。我希望在身份验证之前可以访问静态内容,因此CSS也会在登录页面上加载。现在,仅在身份验证后加载。我的安全配置如下所示:
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { private static final Logger logger = Logger.getLogger(SecurityConfig.class); @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) { try { auth.inMemoryAuthentication() ... } catch (Exception e) { logger.error(e); } } @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .formLogin() .defaultSuccessUrl("/projects", true) .loginPage("/login") .permitAll() .and() .logout() .logoutRequestMatcher(new AntPathRequestMatcher("/logout", "GET")) .permitAll() .and() .authorizeRequests() .antMatchers("/static/**").permitAll() .anyRequest().authenticated(); } }
无论应用程序是否安全,其中的静态内容都在classpath:/static应用程序的根目录(即/*)提供,因此您需要在根目录下的特定路径上进行匹配。默认情况下/js/**,Spring Boot允许所有访问/css/**,,/images/**(SpringBootWebSecurityConfiguration有关详细信息,请参见),但是您可能已将其关闭(看不到其余的代码)。
classpath:/static
/*
/js/**
/css/**
/images/**
SpringBootWebSecurityConfiguration