Skip to content

核心功能模块详解

本文档引用文件

目录

  1. 用户管理模块
  2. 角色权限模块
  3. 菜单管理模块
  4. 模块协同工作流程
  5. 二次开发与扩展指南

用户管理模块

用户管理模块负责系统用户信息的维护与认证管理。该模块通过前端Vue组件与后端Rust服务协同工作,实现用户增删改查、启用禁用、锁定解锁等核心功能。

前端通过usr.ts中的useStorage管理用户登录状态、权限信息和租户ID,使用authorization存储认证令牌,并提供loginlogouthasRole等方法进行用户会话控制。用户认证信息通过AuthModel结构体定义,包含用户ID、租户ID、过期时间等字段。

后端服务通过usr_service.rs提供完整的用户管理接口,包括find_all_usrfind_count_usr等查询方法,以及creates_usrupdate_by_id_usrdelete_by_ids_usr等操作方法。服务层实现了完善的业务逻辑校验,如在删除用户前检查是否被锁定,确保数据安全。

Section sources

角色权限模块

角色权限模块实现基于角色的访问控制(RBAC)机制,通过角色分配和权限验证来管理用户操作权限。该模块包含角色管理、菜单权限、按钮权限、数据权限和字段权限等多个维度的控制。

前端role/List.vue组件提供角色管理界面,支持通过树形选择器配置菜单权限,并通过链接形式展示已分配的按钮权限、数据权限和字段权限数量。权限验证通过permit方法实现,根据当前用户权限动态显示操作按钮。

后端role_service.rs提供角色管理服务,包含find_all_rolefind_count_role等查询接口,以及creates_roleupdate_by_id_roledelete_by_ids_role等操作接口。服务层实现了系统角色保护机制,禁止删除系统角色,并在修改角色前检查锁定状态。

Diagram sources

Section sources

菜单管理模块

菜单管理模块负责系统的动态菜单生成和权限控制。该模块支持树形结构的菜单管理,允许配置父菜单关系、路由路径和显示顺序,并与角色权限模块集成实现菜单级别的访问控制。

前端menu/List.vue组件提供菜单管理界面,支持通过树形选择器选择父菜单,并通过排序输入框调整菜单显示顺序。菜单数据通过findAllMenufindCountMenu接口获取,支持分页查询和条件筛选。

后端menu_service.rs提供菜单管理服务,包含find_all_menufind_count_menu等查询接口,以及creates_menuupdate_by_id_menudelete_by_ids_menu等操作接口。服务层实现了菜单锁定保护机制,在修改或删除菜单前检查锁定状态。

Diagram sources

Section sources

模块协同工作流程

用户管理、角色权限和菜单管理三个模块通过统一的权限验证机制协同工作,构建完整的系统管理功能。用户登录后,系统根据用户所属角色加载对应的菜单权限和操作权限。

当用户访问系统时,首先通过usr.ts中的login方法进行认证,认证成功后将用户信息存储在loginInfo中。系统根据用户的角色代码通过hasRole方法验证权限,并从permitsStore中获取具体的操作权限。

在界面展示层面,通过permit方法检查用户是否具有特定操作权限,动态显示或隐藏相应的操作按钮。在数据访问层面,后端服务在执行敏感操作前通过get_is_locked_by_id等方法检查数据锁定状态,确保数据安全。

Diagram sources

二次开发与扩展指南

为支持二次开发和功能扩展,系统提供了清晰的模块化设计和标准化的接口规范。开发者可以通过以下方式扩展系统功能:

  1. 新增业务模块:在codegen目录下创建新的表结构定义,通过代码生成工具自动生成前后端代码框架。

  2. 扩展权限控制:在permit模块中定义新的权限类型,并在前端组件中通过permit方法进行权限验证。

  3. 自定义菜单配置:通过menu_service.rs提供的接口动态生成菜单,支持根据用户角色和业务场景定制化菜单结构。

  4. 集成第三方认证:通过扩展auth_model.rs中的AuthModel结构体,支持微信、LDAP等第三方认证方式。

  5. 数据权限扩展:在data_permitfield_permit模块基础上,实现更细粒度的数据访问控制策略。

开发者应遵循现有代码风格和设计模式,在扩展功能时确保与现有权限验证机制的兼容性,并通过单元测试验证新功能的正确性。

Section sources