# 执行日志 — 用户租户登录与授权优化 > created: 2026-06-25 ## 2026-06-25 - 初始化变更文档,进入编码阶段。 - 12:50 CST:完成用户租户登录与授权优化编码。 - 变更范围:认证登录配置公开接口、用户批量角色/租户绑定接口、登录页租户选择、用户管理批量操作和回显修复。 - 后端编译: - 首次命令:`mvn -q -pl forge-framework/forge-plugin-parent/forge-plugin-system -am compile -DskipTests` - 结果:失败,系统默认 JDK 不支持 `target 17`。 - 复跑命令:`env JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH mvn -q -pl forge-framework/forge-plugin-parent/forge-plugin-system -am compile -DskipTests` - 结果:通过。 - 前端构建: - 命令:`/bin/zsh -lc "source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build"` - 结果:通过,`built in 2m 7s`。 - 警告:存在既有 `[unplugin-vue-components] component "UserSelectModal"... naming conflicts`、CSS `//` 注释、动态/静态 import 混用 chunk 提示;未阻断构建。 - 代码检查:`git diff --check` 覆盖相关 tracked 文件,通过。 - 跳过项:未启动后端/前端服务,未执行登录和用户管理接口 curl;原因是本轮以模块编译与前端构建闭环,未占用本地服务端口和数据库。 - 服务清理:本轮未启动服务,无需停止。 - 13:36 CST:完成用户多租户编辑与登录品牌图安全渲染跟进修复。 - 变更范围:用户编辑 `tenantIds` 多选和默认租户联动、用户列表多租户名聚合展示、加入租户按钮图标、登录页租户 logo/favicon 白名单公开图片接口。 - 代码检查: - 命令:`git diff --check -- forge-admin-ui/src/views/system/user.vue forge-admin-ui/src/views/login/index.vue forge-admin-ui/src/utils/tenant-config.js forge-admin-ui/src/utils/crypto/crypto-config.js forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/java/com/mdframe/forge/plugin/system/controller/LoginTenantAssetController.java forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/java/com/mdframe/forge/plugin/system/controller/SysUserController.java forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/java/com/mdframe/forge/plugin/system/dto/SysUserDTO.java forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/java/com/mdframe/forge/plugin/system/entity/SysUser.java forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/java/com/mdframe/forge/plugin/system/service/ISysUserService.java forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/java/com/mdframe/forge/plugin/system/service/impl/SysUserServiceImpl.java forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/resources/mapper/SysUserMapper.xml forge-server/forge-framework/forge-starter-parent/forge-starter-auth/src/main/java/com/mdframe/forge/starter/auth/config/SaTokenConfig.java` - 结果:通过。 - 后端编译: - 命令:`env JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH mvn -q -pl forge-framework/forge-plugin-parent/forge-plugin-system -am compile -DskipTests` - 工作目录:`forge-server` - 结果:通过。 - 前端构建: - 命令:`source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build` - 结果:通过,`built in 1m 12s`。 - 警告:仍有既有 `[unplugin-vue-components] component "UserSelectModal"... naming conflicts`、CSS `//` 注释、动态/静态 import 混用 chunk 提示;未阻断构建。 - 安全边界:新增 `/auth/tenant/assets/{tenantId}/{assetType}` 只读取启用租户配置中直接引用的 logo/favicon 文件,并限制安全图片类型;未放开 `/api/file/download/{fileId}` 鉴权。 - 跳过项:未启动后端/前端服务,未执行真实登录页浏览器验证;原因是本轮以模块编译、前端构建和安全边界静态检查闭环,未占用本地服务端口和数据库。 - 服务清理:本轮未启动服务,无需停止。