zhangjf 46e30c8b06 优化用户登录密码加密方式:从 BCrypt 改为 MD5
主要变更:
1. 新增 Md5Util 工具类,提供 MD5 加密和密码验证方法
2. 修改 AuthServiceImpl 直接比对 MD5 值(前端已加密,无需再次加密)
3. 修改 UserServiceImpl 使用 MD5 加密用户密码
4. 前端 Login.vue 添加 MD5 加密函数,提交前对密码进行 MD5 加密
5. 更新数据库初始化脚本,将 admin 密码改为 MD5 值
6. 更新设计文档中的密码加密说明
7. 添加 Lombok 依赖到 fund-sys 模块
8. 增加日志打印,记录密码加密过程便于调试

技术细节:
- 前端流程:用户输入 → MD5 加密 → 传递给后端
- 后端流程:接收 MD5 值 → 与数据库 MD5 值直接 equals 比对
- 默认管理员密码:admin/admin123,MD5: 0192023a7bbd73250516f069df18b500
2026-02-28 06:51:20 +08:00

146 lines
5.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 资金服务平台 - MySQL 初始化脚本
-- 执行顺序: 01
-- 设置字符集
SET NAMES utf8mb4;
SET CHARACTER SET utf8mb4;
-- 创建 Nacos 配置数据库
CREATE DATABASE IF NOT EXISTS `nacos_config`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 创建业务数据库
CREATE DATABASE IF NOT EXISTS `fund_platform`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 授权(如果需要创建专用用户)
-- CREATE USER 'fund_user'@'%' IDENTIFIED BY 'fund123';
-- GRANT ALL PRIVILEGES ON fund_platform.* TO 'fund_user'@'%';
-- FLUSH PRIVILEGES;
USE `fund_platform`;
-- 用户表
CREATE TABLE IF NOT EXISTS `sys_user` (
`id` BIGINT NOT NULL COMMENT '用户ID',
`username` VARCHAR(50) NOT NULL COMMENT '用户名',
`password` VARCHAR(100) NOT NULL COMMENT '密码',
`real_name` VARCHAR(50) COMMENT '真实姓名',
`phone` VARCHAR(20) COMMENT '手机号',
`email` VARCHAR(100) COMMENT '邮箱',
`dept_id` BIGINT COMMENT '部门ID',
`tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID',
`status` TINYINT DEFAULT 1 COMMENT '状态0禁用 1启用',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` TINYINT DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_dept_id` (`dept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-- 角色表
CREATE TABLE IF NOT EXISTS `sys_role` (
`id` BIGINT NOT NULL COMMENT '角色ID',
`role_name` VARCHAR(50) NOT NULL COMMENT '角色名称',
`role_code` VARCHAR(50) NOT NULL COMMENT '角色编码',
`tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID',
`status` TINYINT DEFAULT 1 COMMENT '状态',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` TINYINT DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
-- 菜单表
CREATE TABLE IF NOT EXISTS `sys_menu` (
`id` BIGINT NOT NULL COMMENT '菜单ID',
`parent_id` BIGINT DEFAULT 0 COMMENT '父菜单ID',
`menu_name` VARCHAR(50) NOT NULL COMMENT '菜单名称',
`menu_type` TINYINT DEFAULT 1 COMMENT '类型1目录 2菜单 3按钮',
`path` VARCHAR(200) COMMENT '路由路径',
`component` VARCHAR(200) COMMENT '组件路径',
`perms` VARCHAR(100) COMMENT '权限标识',
`sort` INT DEFAULT 0 COMMENT '排序',
`icon` VARCHAR(100) COMMENT '图标',
`status` TINYINT DEFAULT 1 COMMENT '状态',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` TINYINT DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
-- 用户角色关联表
CREATE TABLE IF NOT EXISTS `sys_user_role` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT NOT NULL,
`role_id` BIGINT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_role` (`user_id`, `role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
-- 角色菜单关联表
CREATE TABLE IF NOT EXISTS `sys_role_menu` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`role_id` BIGINT NOT NULL,
`menu_id` BIGINT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_role_menu` (`role_id`, `menu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表';
-- 部门表
CREATE TABLE IF NOT EXISTS `sys_dept` (
`id` BIGINT NOT NULL COMMENT '部门ID',
`parent_id` BIGINT DEFAULT 0 COMMENT '父部门ID',
`dept_name` VARCHAR(50) NOT NULL COMMENT '部门名称',
`tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID',
`sort` INT DEFAULT 0,
`status` TINYINT DEFAULT 1,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` TINYINT DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
-- 租户表
CREATE TABLE IF NOT EXISTS `sys_tenant` (
`id` BIGINT NOT NULL COMMENT '租户ID',
`tenant_name` VARCHAR(100) NOT NULL COMMENT '租户名称',
`tenant_code` VARCHAR(50) NOT NULL COMMENT '租户编码',
`contact_name` VARCHAR(50) COMMENT '联系人',
`contact_phone` VARCHAR(20) COMMENT '联系电话',
`status` TINYINT DEFAULT 1 COMMENT '状态',
`expire_time` DATETIME COMMENT '过期时间',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` TINYINT DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_code` (`tenant_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户表';
-- 插入默认租户
INSERT INTO `sys_tenant` (`id`, `tenant_name`, `tenant_code`, `contact_name`, `status`)
VALUES (1, '默认租户', 'DEFAULT', '系统管理员', 1) ON DUPLICATE KEY UPDATE `tenant_name` = VALUES(`tenant_name`);
-- 插入默认管理员用户 (密码admin123使用 MD5 加密)
-- MD5('admin123') = '0192023a7bbd73250516f069df18b500'
INSERT INTO `sys_user` (`id`, `username`, `password`, `real_name`, `tenant_id`, `status`)
VALUES (1, 'admin', '0192023a7bbd73250516f069df18b500', '系统管理员', 1, 1)
ON DUPLICATE KEY UPDATE `real_name` = VALUES(`real_name`);
-- 插入默认角色
INSERT INTO `sys_role` (`id`, `role_name`, `role_code`, `tenant_id`)
VALUES (1, '管理员', 'ADMIN', 1), (2, '普通用户', 'USER', 1)
ON DUPLICATE KEY UPDATE `role_name` = VALUES(`role_name`);
-- 分配管理员角色
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (1, 1)
ON DUPLICATE KEY UPDATE `role_id` = VALUES(`role_id`);