我使用 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()
但不工作...
错误出在 css 文件的路径中。有必要明确一下
<link href="/css/file.css" rel="stylesheet">
然后在配置文件中需要写入
.requestMatchers("/js/**", "/css/**", "/fonts/**").permitAll()
或
.anyRequest().permitAll()