From d31be435dbc510295287bb7ee4b7220a2951a5a5 Mon Sep 17 00:00:00 2001 From: Odboy Date: Tue, 28 Jul 2026 21:12:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E3=80=81Redis=E7=BC=93=E5=AD=98=E7=A9=BA?= =?UTF-8?q?=E5=80=BC=E3=80=81=E8=A7=92=E8=89=B2=E5=88=86=E9=85=8D=E3=80=81?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=88=97=E8=A1=A8=E9=87=8D=E5=A4=8D=E7=AD=89?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复: WebSocket OnlineUserMap 加锁, aliasCronMap 改用 sync.Map - 修复: 替换 dgrijalva/jwt-go 为 golang-jwt/jwt (CVE) - 修复: CronJob.Add 缺少 return, resp.ErrorResp 未处理 error 类型 - 修复: token_util 和 login_service 越界访问 - 修复: Logger 级别配置被代码覆盖 - 修复: SysConfig.ConfigValue 字段长度 varchar(1) -> varchar(500) - 修复: Excel 导出列超过26列崩溃 - 修复: 数据库连接池配置过大, Ping goroutine 泄漏 - 修复: config_dao init 绕过缓存层 - 修复: Redis 空值导致 JSON 解析 panic - 修复: 分配角色页面只返回用户已有角色, 未返回所有角色 - 修复: 用户列表因角色关联导致重复行 - 移除: 前端硬编码私钥和默认密码 - 修复: LoginBody 和 updateAuthRole 路径 --- cutego-ui/src/api/system/user.js | 2 +- cutego-ui/src/utils/jsencrypt.js | 38 ++--- cutego-ui/src/views/system/user/authRole.vue | 8 +- cutego/go.mod | 3 +- cutego/go.sum | 23 ++- cutego/main.go | 40 ++---- cutego/modules/core/api/v1/cron_job_api.go | 8 +- cutego/modules/core/api/v1/user_api.go | 72 +++++++--- cutego/modules/core/cache/config_cache.go | 9 +- cutego/modules/core/cache/dict_cache.go | 3 + cutego/modules/core/dao/config_dao.go | 34 ++--- cutego/modules/core/dao/cron_job_dao.go | 16 +-- cutego/modules/core/dao/dept_dao.go | 18 +-- cutego/modules/core/dao/dict_data_dao.go | 19 +-- cutego/modules/core/dao/dict_type_dao.go | 16 +-- cutego/modules/core/dao/log_dao.go | 6 +- cutego/modules/core/dao/login_info_dao.go | 6 +- cutego/modules/core/dao/menu_dao.go | 22 +-- cutego/modules/core/dao/notice_dao.go | 12 +- cutego/modules/core/dao/post_dao.go | 18 +-- cutego/modules/core/dao/role_dao.go | 29 ++-- cutego/modules/core/dao/role_menu_dao.go | 6 +- cutego/modules/core/dao/user_dao.go | 34 +++-- cutego/modules/core/dao/user_post_dao.go | 8 +- cutego/modules/core/dao/user_role_dao.go | 10 +- cutego/modules/core/dataobject/sys_config.go | 2 +- cutego/modules/core/dataobject/sys_role.go | 1 + cutego/modules/core/router/user_router.go | 2 + cutego/modules/core/service/login_service.go | 14 +- cutego/modules/core/service/user_service.go | 19 +++ cutego/pkg/cache/index.go | 6 +- cutego/pkg/config/index.go | 19 +-- cutego/pkg/cronjob/index.go | 59 +++++--- cutego/pkg/excels/export.go | 16 ++- cutego/pkg/gin/index.go | 17 ++- cutego/pkg/jwt/jwt_handler.go | 2 +- cutego/pkg/logger/index.go | 71 ++++++++++ cutego/pkg/logging/index.go | 27 ---- cutego/pkg/middleware/logger/logger.go | 142 ------------------- cutego/pkg/middleware/recover.go | 4 +- cutego/pkg/page/page.go | 5 +- cutego/pkg/redispool/index.go | 15 +- cutego/pkg/resp/index.go | 47 +++--- cutego/pkg/util/struct_util.go | 4 +- cutego/pkg/util/token_util.go | 20 ++- cutego/pkg/websocket/index.go | 25 ++-- cutego/refs/database.go | 34 +++-- cutego/refs/index.go | 8 +- cutego/refs/redis.go | 8 +- cutego/resources/application-dev.yml | 10 +- cutego/update_vendor.sh | 2 + 51 files changed, 544 insertions(+), 495 deletions(-) create mode 100644 cutego/pkg/logger/index.go delete mode 100644 cutego/pkg/logging/index.go delete mode 100644 cutego/pkg/middleware/logger/logger.go create mode 100644 cutego/update_vendor.sh diff --git a/cutego-ui/src/api/system/user.js b/cutego-ui/src/api/system/user.js index 17b3423..da77792 100644 --- a/cutego-ui/src/api/system/user.js +++ b/cutego-ui/src/api/system/user.js @@ -141,7 +141,7 @@ export function getAuthRole(userId) { // 保存授权角色 export function updateAuthRole(data) { return request({ - url: '/system/user/authRole', + url: '/api/v1/user/authRole', method: 'put', params: data }) diff --git a/cutego-ui/src/utils/jsencrypt.js b/cutego-ui/src/utils/jsencrypt.js index 78d9523..46f186e 100644 --- a/cutego-ui/src/utils/jsencrypt.js +++ b/cutego-ui/src/utils/jsencrypt.js @@ -1,30 +1,22 @@ -import JSEncrypt from 'jsencrypt/bin/jsencrypt.min' - -// 密钥对生成 http://web.chacuo.net/netrsakeypair - -const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + - 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==' - -const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + - '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + - 'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' + - 'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' + - 'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' + - 'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' + - 'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' + - 'UP8iWi1Qw0Y=' +// 前端加密/解密工具 +// 注意:前端加密仅用于传输层之外的额外混淆,不能替代 HTTPS +// 敏感操作应依赖后端安全机制 // 加密 export function encrypt(txt) { - const encryptor = new JSEncrypt() - encryptor.setPublicKey(publicKey) // 设置公钥 - return encryptor.encrypt(txt) // 对数据进行加密 + // 使用内置的 btoa 进行基础编码,实际加密由后端处理 + try { + return btoa(encodeURIComponent(txt)) + } catch (e) { + return txt + } } // 解密 export function decrypt(txt) { - const encryptor = new JSEncrypt() - encryptor.setPrivateKey(privateKey) // 设置私钥 - return encryptor.decrypt(txt) // 对数据进行解密 -} - + try { + return decodeURIComponent(atob(txt)) + } catch (e) { + return txt + } +} \ No newline at end of file diff --git a/cutego-ui/src/views/system/user/authRole.vue b/cutego-ui/src/views/system/user/authRole.vue index 65643eb..faa868a 100644 --- a/cutego-ui/src/views/system/user/authRole.vue +++ b/cutego-ui/src/views/system/user/authRole.vue @@ -1,16 +1,16 @@