spring security:登录页面不加载静态资源

问题描述 投票:0回答:1

我使用 Spring Security 完成的 Web 应用程序有问题,它有一个登录页面。 我的配置类:

@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class SecurityConfig {

    @Bean
    public UserDetailsService userDetailsService() {
        return new MyUserDetailsService();
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http.csrf(AbstractHttpConfigurer::disable)
                .authorizeHttpRequests(auth -> auth.requestMatchers("api/v1/apps/welcome", "api/v1/apps/new-user").permitAll()
                        .requestMatchers("api/v1/apps/**").authenticated())
                .formLogin(form -> form
                        .loginPage("/login")
                        .permitAll())
                .build();

    }

    @Bean
    public AuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
        provider.setUserDetailsService(userDetailsService());
        provider.setPasswordEncoder(passwordEncoder());
        return provider;
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

登录页面加载时,仅加载html,缺少css文件和js。据我了解,这是由于角色的分化造成的。如何使静态资源可供所有用户使用?所有资源都位于 resources/static 文件夹中。

我尝试这样做:

.requestMatchers("/static/**").permitAll()

但不工作...

java spring-boot spring-security
1个回答
0
投票

错误出在 css 文件的路径中。有必要明确一下

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

然后在配置文件中需要写入

.requestMatchers("/js/**", "/css/**", "/fonts/**").permitAll()

.anyRequest().permitAll()
© www.soinside.com 2019 - 2024. All rights reserved.