我在 spring 5 中加载图像、CSS 样式等静态资源时遇到问题 当我添加安全性时,没有安全性它加载正常
我就是这样做的。
首先,我在 Eclipse Photon 中使用 Spring Starter Project 创建一个项目
Spring Boot版本:2.2.6
添加一些依赖项:
Spring 网页
thymeleaf
Spring 安全
Spring Boot 开发工具
Spring 启动执行器
运行项目,我使用生成的安全密码,一切正常。
现在我添加静态资源
所以我创建一个名为/assets/imgs 的文件夹
在 src/main/resources/static/
我在该文件夹中添加了一个要使用的假图像,名为 fake-image.png
我创建一个类,其中包含用户和密码以及允许我的资源的模式。
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests().antMatchers("/resources/**", "/static/**","/src/main/resources/**").permitAll().and()
.formLogin().loginPage("/login").permitAll()
.usernameParameter("username").passwordParameter("password")
.defaultSuccessUrl("/loginsuccess").permitAll().and()
.logout().permitAll();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder builder) throws Exception {
PasswordEncoder encoder = passwordEncoder();
UserBuilder users = User.builder().passwordEncoder(encoder::encode);
//User to login
builder.inMemoryAuthentication()
.withUser(users.username("admin").password("q").roles("ADMIN"));
}
}
我创建一个类来添加我的登录表单
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
registry.addViewController("/").setViewName("login");
}
}
最后我添加一个像这样的login.html页面,以显示一个简单的图像
<!DOCTYPE html>
<html lang="es" xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="" />
<meta name="author" content="" />
<meta name="ctx" th:content="@{/}" />
<title>Test Static Files</title>
</head>
<body>
<div class="container">
<div class="row no-gutters mt-3">
<div class="col columna-banner">
<img class="img-fluid rounded login-banner-image"
th:src="@{/assets/imgs/fake-image.png}" />
</div>
</div>
</div>
</body>
</html>
在 Eclipse 控制台中,我收到此警告消息:
警告 1434 --- [nio-8080-exec-2] o.s.web.servlet.PageNotFound:没有 GET/assets/imgs/fake-image.png 的映射
更新1:
已将代码添加到 github:
https://github.com/davisoski/stackoverflow-static-files
我错过了什么吗?
有什么建议吗?
谢谢
最佳答案
您似乎忘记添加这样的内容
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/")
.setCachePeriod(31556926);
}
进入您的 WebConfig 类
关于java - 在启用安全性的 Spring 5 中加载静态资源时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916962/