2.0 KiB
2.0 KiB
2026-03-30
应用配置页面修复
问题1: 页面内容贴边
- 现象: 应用配置页面内容紧贴浏览器边缘
- 解决: 给
.app-config-page容器添加了padding: 24px
问题2: 数据库加密错误
- 现象:
InvalidKeyOrParametersException: Key length not 128/192/256 bits - 原因: 后端 Hutool 加密库在处理敏感字段时出错
- 解决:
- 移除了所有配置字段的
secret: true标记 - 保存时设置
isEncrypted和isSecret为 0 - 移除了"敏感信息,已加密存储"的 UI 提示
- 移除了所有配置字段的
- 注意: 后端加密密钥
WLgNsWJ8rPjRtnjzX/Gx2RGS80Kwnm/ZeLbvIL+NrBs=长度为 32字节,符合要求,问题可能是 Base64 解码处理不当
问题3: 刷新页面 404
- 现象: 访问
/developer/config?websiteId=6268刷新后显示 "Page not found" - 尝试的方案:
- 添加
ssr: false- 未解决 - 使用
ClientOnly包裹 - 未解决 - 添加参数验证和自动跳转 - 未解决
- 添加
mounted标志延迟渲染 - 未解决
- 添加
- 最终解决方案:
- 将查询参数改为路由参数:
/developer/config?websiteId=6268→/developer/config/6268 - 创建正确的文件结构:
/app/pages/developer/config/[id].vue - 修改参数读取逻辑: 支持
route.params.id和route.query.websiteId两种方式 - 更新 AppDetail.vue 中的跳转链接
- 将查询参数改为路由参数:
- 注意: 修改文件结构后需要重启开发服务器
- 状态: 已解决
问题4: 唯一键冲突错误
- 现象:
Duplicate entry '6268-api.baseUrl-1' for key 'app_config.uk_website_key' - 原因: 后端批量保存时先执行
DELETE WHERE website_id = ?,但数据库唯一键uk_website_key包含website_id和config_key,软删除的记录 (deleted=1) 仍会导致唯一键冲突 - 解决:
- 先加载配置列表建立
configKey -> configId映射 - 保存时判断: 有 configId 则用
updateAppConfig,无则用saveAppConfig - 避免后端批量删除逻辑导致的唯一键冲突
- 先加载配置列表建立
- 状态: 已解决