web-RABC-Permissions-sdk:彻底解决后台管理系统权限控制难题的终极方案
【免费下载链接】web-RABC-Permissions-sdk后台管理系统RABC通用权限控制规范与规范代码实施js-SDK,包含 节点/按钮/路由 等控制 ,支持hidden项目地址: https://gitcode.com/gh_mirrors/we/web-RABC-Permissions-sdk
web-RABC-Permissions-sdk 是一款专为后台管理系统打造的 RABC 通用权限控制 JavaScript SDK,能够轻松实现节点、按钮、路由等元素的权限管理,支持隐藏(hidden)、禁用(disabled)、删除等多种控制方式,还可通过自定义函数处理复杂权限逻辑。通过简单配置即可实现灵活高效的 RABC 权限控制,让开发者告别繁琐的权限管理代码。
🚀 为什么选择 web-RABC-Permissions-sdk?
在后台管理系统开发中,权限控制是不可或缺的核心功能。传统权限管理方案往往存在代码侵入性强、配置复杂、扩展性差等问题。web-RABC-Permissions-sdk 凭借以下优势脱颖而出:
- 轻量级设计:体积仅 6.56kb,不会给项目带来额外负担
- 灵活配置:支持多种权限控制策略,满足不同场景需求
- 低侵入性:采用面向切面编程思想,不影响现有业务逻辑
- 高性能:内置节流机制,避免频繁操作 DOM 影响性能
- 框架兼容:支持 Vue、React 等主流前端框架
💡 核心功能与设计思路
设计理念
web-RABC-Permissions-sdk 采用"默认可见,按需隐藏"的设计思路:
- 系统初始状态下,所有按钮、容器、节点均为可见状态
- 用户登录后,只需配置不可访问的权限节点即可实现权限控制
- 支持通过配置系统动态调整权限,无需修改代码
权限控制维度
该 SDK 支持多维度的权限控制:
- 节点控制:通过 ID 或类名控制页面元素的显示/隐藏
- 按钮控制:精细化控制单个按钮的可用状态
- 路由控制:根据权限动态过滤可访问路由
- 自定义处理:支持通过函数实现复杂的权限逻辑
权限优先级机制
SDK 内部实现了智能的权限优先级处理:
- 基础权限:角色固有的权限集合
- 特殊权限:针对特定用户的权限补充
- 临时权限:在特定时间段内生效的权限设置
📦 快速开始
安装方式
通过 npm 安装:
npm i web-rabc-permissions-sdk -S基本使用示例
以下是一个简单的使用示例,展示如何初始化并应用权限控制:
import { webRabcPermisson, getNewPermissionSimpleDTO, PLAN_ENUM, webRabcPermissionSdkOptions } from 'web-rabc-permissions-sdk'; // 初始化权限配置 let _havePermissArr = [], _noPermissArr = [], _specialArr = []; // 从后端获取权限数据 ajax('get', '/api/permissions', { userId: currentUser.id }).then(res => { const { permissions } = res.data; // 构建权限DTO _noPermissArr = permissions.noPermiss.map(item => { const permissDTO = new getNewPermissionSimpleDTO(); permissDTO.describe = item.description; permissDTO.eleIdOrClass = item.selector; // 如 "#delete-btn" 或 ".edit-btn" permissDTO.resultType = 'hidden'; // 控制方式:hidden/disabled/removeNode permissDTO.routerPath = item.route; // 关联路由 return permissDTO; }); // 配置SDK选项 webRabcPermissionSdkOptions.noPermiss = _noPermissArr; webRabcPermissionSdkOptions.plan = PLAN_ENUM.OB_SERVER; // 使用MutationObserver方案 webRabcPermissionSdkOptions.libraryName = 'vue'; // 当前项目使用的框架 // 创建实例并启动权限控制 const webRabc = new webRabcPermisson(webRabcPermissionSdkOptions); webRabc.start({ millisec: 500, obServerConfig: { attributes: false, childList: true, subtree: true }, delay: 500, obElem: 'app' // 监控的根节点ID }); });🔧 核心配置详解
permissionSimpleDTO(权限数据传输对象)
这是定义权限节点的核心数据结构,每个权限节点都需要通过该对象描述:
| 属性名 | 是否必选 | 描述 |
|---|---|---|
| routerPath | 是 | 当前路由关键字,用于匹配路由 |
| eleIdOrClass | 是 | 节点选择器,ID以"#"开头,类名以"."开头 |
| resultType | 否 | 控制方式,可选值:hidden/disabled/removeNode,默认hidden |
| showElemType | 否 | 自定义显示样式,设置后会覆盖resultType |
| describe | 否 | 节点描述,用于调试 |
| callBackFunc | 否 | 自定义处理函数 |
| vueTemplateRoot | 否 | Vue模板根节点ID,用于获取Vue实例 |
webRabcPermissionSdkOptions(SDK配置选项)
| 属性名 | 是否必选 | 描述 |
|---|---|---|
| plan | 是 | 执行方案,可选值:SET_TIMEOUT/OB_SERVER |
| libraryName | 否 | 前端框架名称,如"vue"或"react" |
| havePermiss | 否 | 必须显示的权限节点集合 |
| noPermiss | 否 | 需要隐藏的权限节点集合 |
| specialPermiss | 否 | 特殊权限节点集合 |
| actionOrder | 否 | 权限执行顺序,默认:noPermiss -> havePermiss -> specialPermiss |
执行计划(PLAN_ENUM)
SDK 提供两种执行方案,可根据项目需求选择:
| 方案 | 描述 |
|---|---|
| SET_TIMEOUT | 通过定时器轮询检查权限 |
| OB_SERVER | 使用MutationObserver监听DOM变化 |
📊 SDK架构与工作原理
web-RABC-Permissions-sdk 采用面向切面的编程思想,其核心工作流程如下:
- 初始化:缓存传入的参数与权限节点
- 权限处理:diff拥有权限与没有权限的数据,解决互斥
- 执行计划:根据浏览器支持情况选择执行方案,不支持则自动降级
- 路由匹配:根据当前路由匹配相应的权限配置
- 权限应用:执行权限控制逻辑,操作DOM元素
web-RABC-Permissions-sdk架构图,展示了权限控制的核心流程与组件关系
🔄 高级使用技巧
自定义权限处理函数
通过callBackFunc可以实现复杂的权限逻辑:
permissDTO.callBackFunc = function(tools) { // tools提供常用DOM操作方法 const buttons = tools.$queryAll('.operation-btn'); buttons.forEach(btn => { // 自定义处理逻辑 btn.style.opacity = '0.5'; btn.title = '无操作权限'; }); };动态更新权限
在用户角色变更时,可以动态更新权限配置:
// 获取新的权限数据后 webRabc.updatePermissions({ havePermiss: newHavePermissArr, noPermiss: newNoPermissArr, specialPermiss: newSpecialArr });📝 项目结构
核心源码位于src/core/webCore.js,配置文件位于src/config/目录下:
src/config/config.js:SDK基本配置src/config/message.js:提示消息配置src/core/webCore.js:核心权限控制逻辑src/index.js:对外暴露API
🚧 未来开发计划
- 增加微前端模式支持
- 实现removeNode逻辑
- 增加浏览器空闲执行模式
- 提供更丰富的权限验证规则
🤝 如何贡献
如果你发现任何问题或有好的建议,欢迎通过以下方式参与贡献:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启Pull Request
📄 许可证
本项目采用 MIT 许可证 - 详情参见 LICENSE 文件。
💬 总结
web-RABC-Permissions-sdk 为后台管理系统提供了一套完整的权限控制解决方案,通过简单配置即可实现灵活高效的权限管理。无论是小型项目还是大型应用,都能从中受益。立即尝试,让权限控制变得简单!
【免费下载链接】web-RABC-Permissions-sdk后台管理系统RABC通用权限控制规范与规范代码实施js-SDK,包含 节点/按钮/路由 等控制 ,支持hidden项目地址: https://gitcode.com/gh_mirrors/we/web-RABC-Permissions-sdk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考