从零配置若依自定义上传目录:权限放行+资源映射,一步到位

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 若依(ruoyi)
  • 时间:2026-01-29 18:07
  • 47人已阅读
简介 若依开发者必看:自定义文件目录401错误,一文彻底解决问题场景很多若依开发者配置了自定义文件上传目录(如/safety-task/file/image/)后,访问时却遇到401认证失败,而系统默认的/profile/upload/路径却能正常访问。问题根源若依框架中,自定义目录需要双重配置才能正常访问:SecurityConfig.java-权限放行ResourcesConfig.java-资源映

🔔🔔好消息!好消息!🔔🔔

有需要的朋友👉:微信号 kaigejava2022

若依开发者必看:自定义文件目录401错误,一文彻底解决

问题场景

很多若依开发者配置了自定义文件上传目录(如 /safety-task/file/image/)后,访问时却遇到 401认证失败,而系统默认的 /profile/upload/ 路径却能正常访问。

问题根源

若依框架中,自定义目录需要双重配置才能正常访问:

  1. SecurityConfig.java - 权限放行

  2. ResourcesConfig.java - 资源映射
    两者缺一不可!

🔧 完整解决方案

步骤一:修改 SecurityConfig.java

修改代码:

filterChain 方法的 permitAll 列表中添加你的自定义路径:

// 找到这行代码
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()

// 修改为(添加你的自定义目录)
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**", "/safety-task/**").permitAll()

步骤二:修改 ResourcesConfig.java

修改代码:

添加自定义目录的资源映射处理器:

@Configuration
public class ResourcesConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 系统默认配置
        registry.addResourceHandler("/profile/**")
                .addResourceLocations("file:" + HdtdBaseConfig.getProfile() + "/");
        
        // 🔥 新增自定义目录配置
        registry.addResourceHandler("/safety-task/**")
                .addResourceLocations("file:" + HdtdBaseConfig.getProfile() + "/safety-task/");
    }
}

📁 配置文件关联说明

  • application.yml:定义了文件存储的基础路径 hdtdbase.profile

  • HdtdBaseConfig.java:获取配置文件中的路径

  • SecurityConfig.java:控制访问权限

  • ResourcesConfig.java:建立URL与本地文件的映射关系

🎯 验证效果

修改完成后,访问路径的映射关系如下:

http://localhost:28080/safety-task/file/image/test.jpg
↓ 映射到本地
D:/ruoyi/uploadPath/safety-task/file/image/test.jpg

⚠️ 重要提醒

  1. 必须重启服务:配置修改后需要重启Spring Boot应用

  2. 路径一致性:确保SecurityConfig和ResourcesConfig中的路径完全一致

  3. 文件权限:检查服务器文件系统是否具有读取权限

  4. 目录存在性:确认目标文件夹在服务器上真实存在

💡 扩展建议

如果你有多个自定义目录,可以统一管理:

// 在SecurityConfig中
.antMatchers(HttpMethod.GET, "/custom-dir1/**", "/custom-dir2/**").permitAll()

// 在ResourcesConfig中
registry.addResourceHandler("/custom-dir1/**")
        .addResourceLocations("file:" + HdtdBaseConfig.getProfile() + "/custom-dir1/");
registry.addResourceHandler("/custom-dir2/**")
        .addResourceLocations("file:" + HdtdBaseConfig.getProfile() + "/custom-dir2/");

📊 配置对照表

配置项作用默认路径自定义路径
SecurityConfig权限控制✅ 已配❌ 需手动添加
ResourcesConfig资源映射✅ 已配❌ 需手动添加
最终效果可匿名访问✅ 正常✅ 配置后正常

总结:若依框架中自定义文件目录的访问问题,本质是权限放行资源映射的同步配置。按照上述两步操作,即可彻底解决401认证失败问题。

如果有其他自定义路径需求,只需按照相同模式配置即可。觉得有用欢迎点赞收藏,避免下次再踩坑!


TopTop