Spring安全性不允许加载CSS或JS资源

2022-09-01 00:30:01

资源在src/main/resources/static/css或src/main/resources/static/js下,我使用的是spring boot,安全类是:

@Configuration
@EnableWebMvcSecurity
@EnableGlobalAuthentication
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
//      http.authorizeRequests().antMatchers("/", "/index", "/quizStart")
//              .permitAll().anyRequest().authenticated();
//      http.formLogin().loginPage("/login").permitAll().and().logout()
//              .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth)
            throws Exception {
        auth.inMemoryAuthentication().withUser("test").password("test")
                .roles("USER");
    }
}

当我从浏览器访问“/index”时,它工作得很好(可以加载资源),但是,如果我取消注释类中的四行,资源就无法加载,这四行表示:

    http.authorizeRequests().antMatchers("/", "/index", "/quizStart")
            .permitAll().anyRequest().authenticated();
    http.formLogin().loginPage("/login").permitAll().and().logout()
            .permitAll();

任何人都可以帮忙吗?提前致谢。


答案 1

您可能希望确保将包含这些项目的目录设置为 permitAll。

这是我的春季安全上下文文件的摘录。在资源目录下,我有js,css和图像文件夹,它们被这行赋予了权限。

<security:intercept-url pattern="/resources/**" access="permitAll" />

答案 2

由于某种原因,这对我不起作用:

http.authorizeRequests().antMatchers("/resources/**").permitAll();

我不得不添加这个:

http.authorizeRequests().antMatchers("/resources/**").permitAll().anyRequest().permitAll();

此外,此行必须位于 rerics 访问的代码之后。


推荐