网站首页/ 信息中心/ 档案百科/

档案管理软件访问权限控制:从零搭建可落地分级管控实操方案

发布时间:2026年06月29日 19:35:15 浏览量:0

方案核心设计思路

本方案适配通用档案管理场景,基于RBAC(基于角色的访问控制)模型实现,分为4级权限体系:超级管理员、部门管理员、档案创作者、普通访客,完全匹配档案分级查阅、分级编辑的业务需求,所有步骤可直接复用,零调整落地。

前期环境准备

从零开发或二次开发档案管理系统,直接使用以下资源准备环境,所有链接为官方直链,可直接下载:

第一步:初始化权限核心数据表

登录MySQL后,直接复制以下SQL执行,自动生成所有权限核心表和初始数据:

```sql CREATE DATABASE IF NOT EXISTS file_manage DEFAULT CHARACTER SET utf8mb4; USE file_manage; -- 系统用户表 CREATE TABLE `sys_user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', `username` varchar(32) NOT NULL COMMENT '用户名', `password` varchar(128) NOT NULL COMMENT 'BCrypt加密密码', `dept_id` bigint DEFAULT NULL COMMENT '所属部门ID', `status` tinyint NOT NULL DEFAULT '1' COMMENT '1启用 0禁用', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表'; -- 角色表 CREATE TABLE `sys_role` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID', `role_name` varchar(32) NOT NULL COMMENT '角色名称', `role_code` varchar(32) NOT NULL COMMENT '角色唯一标识', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; -- 用户角色关联表 CREATE TABLE `sys_user_role` ( `id` bigint NOT NULL AUTO_INCREMENT, `user_id` bigint NOT NULL COMMENT '用户ID', `role_id` bigint NOT NULL COMMENT '角色ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_user_role` (`user_id`,`role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表'; -- 权限表 CREATE TABLE `sys_permission` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '权限ID', `perm_code` varchar(64) NOT NULL COMMENT '权限唯一标识', `perm_name` varchar(32) NOT NULL COMMENT '权限名称', `perm_type` tinyint NOT NULL COMMENT '1目录 2菜单 3数据/接口权限', PRIMARY KEY (`id`), UNIQUE KEY `uk_perm_code` (`perm_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表'; -- 角色权限关联表 CREATE TABLE `sys_role_perm` ( `id` bigint NOT NULL AUTO_INCREMENT, `role_id` bigint NOT NULL COMMENT '角色ID', `perm_id` bigint NOT NULL COMMENT '权限ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_role_perm` (`role_id`,`perm_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联表'; -- 档案业务表 CREATE TABLE `archive` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '档案ID', `archive_name` varchar(128) NOT NULL COMMENT '档案名称', `creator_id` bigint NOT NULL COMMENT '创建人ID', `dept_id` bigint NOT NULL COMMENT '归属部门ID', `visible_level` tinyint NOT NULL DEFAULT '1' COMMENT '1仅本人 2部门可见 3全公司可见', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案表'; -- 插入初始角色数据 INSERT INTO `sys_role` (`role_name`, `role_code`) VALUES ('超级管理员', 'super_admin'), ('部门管理员', 'dept_admin'), ('档案创作者', 'creator'), ('普通访客', 'guest'); -- 插入档案权限数据 INSERT INTO `sys_permission` (`perm_code`, `perm_name`, `perm_type`) VALUES ('archive:view:all', '查看所有档案', 3), ('archive:view:dept', '查看本部门档案', 3), ('archive:view:self', '查看自己创建的档案', 3), ('archive:edit:all', '编辑所有档案', 3), ('archive:edit:dept', '编辑本部门档案', 3), ('archive:edit:self', '编辑自己的档案', 3), ('archive:delete:all', '删除所有档案', 3), ('archive:delete:dept', '删除本部门档案', 3), ('archive:delete:self', '删除自己的档案', 3); -- 给超级管理员绑定所有权限 INSERT INTO `sys_role_perm` (`role_id`, `perm_id`) SELECT 1, id FROM sys_permission; -- 插入初始超级管理员,初始密码123456(已BCrypt加密) INSERT INTO `sys_user` (`username`, `password`, `status`) VALUES ('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt', 1); INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (1,1); ```

第二步:实现接口权限拦截校验

在SpringBoot项目中,先添加核心依赖,pom.xml中直接添加以下配置:

```xml org.springframework.boot spring-boot-starter-web 2.7.12 org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.2 mysql mysql-connector-java 8.0.33 ```

编写核心拦截校验代码

档案管理软件访问权限控制:从零搭建可落地分级管控实操方案

每次用户访问档案接口时,自动校验权限,完整代码可直接复制:

```java @Component public class ArchivePermissionInterceptor implements HandlerInterceptor { @Autowired private ArchiveMapper archiveMapper; @Autowired private PermissionService permissionService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 1.获取请求参数中的档案ID Long archiveId = Long.parseLong(request.getParameter("archiveId")); // 2.获取当前登录用户ID(替换为你项目的token解析逻辑即可) Long userId = UserContext.getCurrentUserId(); // 3.查询档案基础信息 Archive archive = archiveMapper.selectById(archiveId); // 4.按档案可见级别校验权限 switch (archive.getVisibleLevel()) { case 1: // 仅本人可见 boolean isSelf = archive.getCreatorId().equals(userId); boolean hasAllView = permissionService.hasPermission(userId, "archive:view:all"); if (!isSelf && !hasAllView) { response.sendError(403, "无权限访问该档案"); return false; } break; case 2: // 仅部门可见 User currentUser = UserContext.getCurrentUser(); boolean sameDept = currentUser.getDeptId().equals(archive.getDeptId()); boolean hasDeptView = permissionService.hasPermission(userId, "archive:view:dept"); if ((!sameDept || !hasDeptView) && !hasAllView) { response.sendError(403, "无权限访问该档案"); return false; } break; case 3: // 全公司可见 boolean hasAnyView = permissionService.hasAnyPermission(userId, "archive:view:self", "archive:view:dept", "archive:view:all"); if (!hasAnyView) { response.sendError(403, "无权限访问该档案"); return false; } break; } return true; } } ```

注册拦截器,配置拦截规则:

```java @Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private ArchivePermissionInterceptor archivePermissionInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(archivePermissionInterceptor) .addPathPatterns("/archive/") .excludePathPatterns("/user/login", "/user/logout"); } } ```

第三步:后台配置操作流程

完成开发后,按以下步骤给用户配置权限,操作即可生效:

  1. 创建用户:在用户管理页新增用户,填写用户名密码,绑定所属部门
  2. 分配角色:给用户绑定对应角色,例如部门负责人绑定「部门管理员」角色
  3. 调整角色权限:进入角色管理页,给角色勾选需要的权限,保存后立即生效
  4. 上传档案设置可见性:用户上传档案时,选择对应可见级别,系统自动控制访问权限

常见问题排查

完成以上所有步骤后,即可实现完整可用的档案管理软件访问权限控制,无需额外调整即可适配绝大多数业务场景。

平顶山档案数字化全流程指南 2024收费标准及合规避坑要点
平顶山档案数字化全流程指南 2024收费标准及合规避坑要点
这篇指南专门给平顶山本地有档案数字化需求的机关单位、企业、学校、医疗机构整理,全程都是本地落地的实操经验,涵盖服务适配场景、2024最新收费参考、全流程核心操作规范、靠谱服务商筛选标准,看完不用再反复...
2026年06月29日 19:35:15
档案软件一次性付费,我为什么劝你别再按月付冤枉钱?
档案软件一次性付费,我为什么劝你别再按月付冤枉钱?
你是不是也遇到过这种情况?每个月手机里各种订阅费自动扣款,其中就包括那个不怎么用但也不敢取消的档案管理软件。几十块钱一个月看起来不多,但一年算下来大几百就没了,关键是这软件你一个月可能就用一两次。每次...
2026年06月29日 19:35:15
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818