在我为应用程序添加安全性后,静态内容停止加载,它发出对 JS 和 CSS 的请求,但返回状态代码 303。
仅显示原始 HTML。
这是我的配置,我还对下面的静态内容、属性文件的位置进行了更改。
@Configuration
@EnableWebSecurity
public class Security {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.csrf(Customizer.withDefaults())
.cors(Customizer.withDefaults())
.authorizeHttpRequests(request -> {
request.requestMatchers("/backoffice/**").authenticated()
.requestMatchers("/index/**").permitAll()
.requestMatchers("/static/**").permitAll();
})
.formLogin(form -> form
.loginPage("/login")
.permitAll()
);
return http.build();
}
}
属性文件
spring.messages.basename=lang/messages
# Thymeleaf
spring.thymeleaf.cache=false
spring.thymeleaf.mode=HTML
spring.thymeleaf.encoding=utf-8
spring.thymeleaf.prefix=file:src/main/resources/templates/
# Static resources
spring.web.resources.cache.period=0
spring.web.resources.static-locations=file:src/main/resources/static/,file:uploads/ProductImages/
# Connection string
spring.data.mongodb.uri=${CONNECTION_STRING}
# Custom File Size
spring.servlet.multipart.max-file-size=5MB
spring.servlet.multipart.max-request-size=5MB
# Custom folder for serving product images
当我删除安全配置内容时,会正常加载。
而不是使用
.requestMatchers("/static/**").permitAll();
我需要使用
.requestMatchers("/css/**", "/js/**", "/fonts/**", "img/**").permitAll();
since my resources.static-locations
设置为静态文件夹,我在其中保存所有静态内容。