在日常开发中,前端需要访问一个图片,后端需要做的一些配置,记录一下如何操作。
项目使用的是 SpringSecurity 安全框架。
首先需要配置静态资源的映射,使得特定的路由前缀可以访问静态资源。
需要实现 WebMvcConfigurer接口,它是 Spring MVC 提供的配置接口,允许我们自定义 MVC 配置,包括静态资源的映射。
我们重写了 WebMvcConfigurer 接口中的 addResourceHandlers 方法,用于配置静态资源的映射关系。 ResourceHandlerRegistry 对象用于注册静态资源的处理器。
实现
通过 addResourceHandler 方法,映射一个 profile 后面的任意路由,跳转到 D:upload/ 下,也就是说,将 profile替换了实际的路径。
@Configuration
public class ResourcesConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/profile/**")
.addResourceLocations("file:" + "/D:upload/");
}
去除 Security 认证
静态资源是不需要认证的哈
在 Spring Security 中用于配置 Security 的认证情况,我们设置指定路径不进行认证。
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeRequests(expressionInterceptUrlRegistry ->
expressionInterceptUrlRegistry.antMatchers("/login", "/captchaImage", "/register").permitAll()
// 下面是追加对资源的释放,并设置get请求
.antMatchers(HttpMethod.GET, "/profile/**").permitAll()
// 其他请求需要认证
.anyRequest().authenticated())
return httpSecurity.build();
}
这样就可以通过路径访问了。
前端通过路径访问即可
<img src="http://localhost:8080/profile/avatar.jpg" alt="User Avatar">