springBoot 拦截器中部分排除路径无效

tandy 2020-06-23 01:54:31
需求为前后端分离的项目,上传图片后前端可以回显。为了实现回显功能在 springboot 配置中增加了以下配置。
主要作用是我上传图片后为图片生成了一个虚拟路径,通过访问该虚拟路径可以实现回显,拦截器需要排除访问图片的虚拟路径。
例如:上传图片123.jpg 生成的虚拟路径为 /static/123.jpg
在windows操作环境下测试访问 http://localhost:8080/app/static/123.jpg [可以访问]
放到linux云服务器访问 http://***.***.***.***:8080/app/static/123.jpg [拒绝访问:原因是被拦截器拦截]

各位大神,这是什么原因???????


@Configuration
public class SpringBootConfig implements WebMvcConfigurer {

// 上传文件虚拟路径 (这里取值结果为 virtualDir = "/static/**" )
@Value("${upload.virtual-dir}")
private String virtualDir;

/**
* 配置自定义拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加拦截器,并排除不需要进行拦截的路径
registry.addInterceptor(new 拦截器).addPathPatterns("/**")
.excludePathPatterns("/login/**", "/logout/**", "/unauthorized/**", this.virtualDir);
}

/**
* 配置虚拟路径映射
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 图片的上传路径
String imageDir;
// 获取操作系统(测试: 只判断 windows 和 linux)
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("windows")) {
imageDir = "file:F:/upload/images/";
} else {
imageDir = "/upload/images/";
}
registry.addResourceHandler( this.virtualDir).addResourceLocations(imageDir);
}


}
...全文
1409 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tandy 2020-06-23
  • 打赏
  • 举报
回复
已解决: registry.addResourceHandler( this.virtualDir).addResourceLocations(imageDir); imageDir 不管是 windows 还是 linux ,路径前一定要加 "file:"

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧