ContiNew
系统管理

用户管理

系统用户的查询、新增、导入导出、重置密码与分配角色,以及内置用户的保护规则。

本文是 4.x 的归档文档(冻结于 v4.2.0)。该分支只接收勘误修正, 内容基本不再变动;文中的源码路径、配置项与版本号均以 4.2.x 为准,不建议用于新项目。

新项目请查看 5.x 最新文档。已在 4.2.x 上运行的项目,本文仍是可靠依据。

用户管理维护可以登录系统的账号,功能入口在「系统管理 -> 用户管理」,后端接口前缀为 /system/user,对应 UserController。用户数据存储在 sys_user 表,角色关联存储在 sys_user_role 表。

功能概览

功能接口权限码
分页/列表/详情/新增/修改/删除/导出@CrudRequestMapping("/system/user") 自动生成system:user:list 等
下载导入模板GET /system/user/import/templatesystem:user:import
解析导入数据POST /system/user/import/parsesystem:user:import
导入数据POST /system/user/importsystem:user:import
重置密码PATCH /system/user/{id}/passwordsystem:user:resetPwd
分配角色PATCH /system/user/{id}/rolesystem:user:updateRole

CRUD 接口的权限码由 BaseController.preHandle 按 API 类型自动生成,例如新增用户对应 system:user:create,删除对应 system:user:delete。

用户字段

sys_user 表的主要字段如下。

字段说明
username用户名,登录账号,唯一(与 deleted 组成联合唯一索引)
nickname昵称,页面展示名
password密码,BCrypt 加密存储,前缀 {bcrypt}
gender性别(0:未知;1:男;2:女)
email / phone邮箱、手机号,均带唯一索引,可用于对应方式登录
avatar头像地址
status状态(1:启用;2:禁用),禁用后无法登录
is_system是否系统内置数据
pwd_reset_time最后一次修改密码时间,用于密码有效期策略
dept_id所属部门,关联 sys_dept

新增与修改

新增用户时填写用户名、昵称、所属部门、角色等基础信息,初始密码由管理员设置。提交时前端先用 RSA 公钥加密密码,后端经 SecureUtils.decryptPasswordByRsaPrivateKey 解密后再以 BCrypt 入库。

用户名、邮箱、手机号分别带唯一索引,重复时直接报错。邮箱、手机号字段经过 continew-starter.encrypt.field 的 AES 字段加密,数据库中保存密文。

导入与导出

用户导入分三步走,先下载模板,再解析校验,最后确认导入。

点击「下载模板」获取 Excel 导入模板,接口为 GET /system/user/import/template。
填写后上传文件,前端调 POST /system/user/import/parse 解析并展示校验结果(成功条数与失败原因)。
确认无误后提交导入,POST /system/user/import 执行实际写入并返回导入结果。

导出使用 GET /system/user/export,按当前查询条件生成 Excel,基于 FastExcel 实现。

重置密码

管理员通过 PATCH /system/user/{id}/password 重置指定用户的登录密码。新密码同样经 RSA 加密传输,重置后用户的 pwd_reset_time 刷新,历史密码写入 sys_user_password_history 表,受「系统配置 -> 密码配置」中历史密码重复校验次数约束。

分配角色

用户与角色为多对多关系,通过 PATCH /system/user/{id}/role 整体调整某个用户的角色集合。角色决定用户的功能权限(菜单、按钮)与数据权限,详见角色管理。

初始化脚本中 admin 用户(is_system = 1)与内置角色为系统内置数据,禁止变更与删除,避免把系统的最后入口关掉。

密码策略联动

用户的密码行为受「系统配置 -> 密码配置」分组控制,包括错误锁定阈值(PASSWORD_ERROR_LOCK_COUNT,默认 5 次)、锁定时长(PASSWORD_ERROR_LOCK_MINUTES,默认 5 分钟)、密码有效期(PASSWORD_EXPIRATION_DAYS)、历史密码重复校验(PASSWORD_REPETITION_TIMES,默认 3 次)与最小长度(PASSWORD_MIN_LENGTH,默认 8)。密码过期后登录会被强制跳转到修改密码页。配置项详见系统配置。

相关源码

目录