ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

web-RABC-Permissions-sdk实战教程:3个案例掌握按钮级权限控制

web-RABC-Permissions-sdk实战教程:3个案例掌握按钮级权限控制 web-RABC-Permissions-sdk实战教程3个案例掌握按钮级权限控制【免费下载链接】web-RABC-Permissions-sdk后台管理系统RABC通用权限控制规范与规范代码实施js-SDK包含 节点/按钮/路由 等控制 支持hidden项目地址: https://gitcode.com/gh_mirrors/we/web-RABC-Permissions-sdkweb-RABC-Permissions-sdk是一款后台管理系统RABC通用权限控制规范与规范代码实施js-SDK包含节点/按钮/路由等控制支持hidden、disabled、删除或自定义function处理通过配置实现RABC的权限控制。快速入门安装与基础配置 一键安装步骤通过npm即可快速安装web-RABC-Permissions-sdknpm i web-rabc-permissions-sdk -S核心概念解析该SDK基于RABC设计思想通过配置用户可拥有和不可拥有的权限节点实现控制。核心设计思路包括初始状态下所有按钮、容器、节点均为可见状态通常只需配置用户不可使用的节点权限支持通过多角色、特殊权限补充实现复杂权限需求权限控制粒度精确到按钮级支持hidden、disabled等多种控制方式案例1基础按钮隐藏控制 实现步骤创建权限配置对象使用getNewPermissionSimpleDTO()创建权限节点配置设置不可见权限配置noPermiss数组指定需要隐藏的按钮初始化SDK传入配置参数并启动权限控制代码示例import { webRabcPermisson, getNewPermissionSimpleDTO, PLAN_ENUM, webRabcPermissionSdkOptions } from web-rabc-permissions-sdk; // 创建不可见权限配置 const noPermissArr [ { describe: 隐藏编辑按钮, eleIdOrClass: #editBtn, // 按钮ID选择器 resultType: hidden, // 控制方式隐藏 routerPath: /user/list // 应用路由 } ]; // 配置SDK选项 webRabcPermissionSdkOptions.noPermiss noPermissArr; webRabcPermissionSdkOptions.plan PLAN_ENUM.OB_SERVER; // 使用MutationObserver方案 webRabcPermissionSdkOptions.libraryName vue; // 指定框架为Vue // 初始化并启动权限控制 const webRabc new webRabcPermisson(webRabcPermissionSdkOptions); webRabc.start({ millisec: 500, obServerConfig: { childList: true, subtree: true }, obElem: app // 监控的根节点ID });实现原理SDK通过MutationObserver监控DOM变化当匹配到路由/user/list时自动查找ID为editBtn的元素并设置hidden样式。这种方式无需修改业务代码通过配置即可实现权限控制。案例2按钮禁用与自定义处理 ⚙️场景需求某些场景下需要将按钮设置为禁用状态而非完全隐藏或者执行自定义逻辑如显示权限不足提示。实现步骤配置特殊权限节点使用specialPermiss数组配置特殊处理的按钮设置自定义处理函数通过callBackFunc实现禁用逻辑或其他自定义操作获取框架实例配置vueTemplateRoot获取Vue实例实现更灵活的控制代码示例// 创建特殊权限配置 const specialPermissArr [ { describe: 禁用删除按钮并显示提示, eleIdOrClass: .deleteBtn, // 按钮类选择器 routerPath: /user/list, callBackFunc: function(tools) { // 获取所有删除按钮 const buttons tools.$queryAll(this.eleIdOrClass); buttons.forEach(btn { btn.disabled true; btn.title 您没有删除权限; // 添加点击事件提示 btn.addEventListener(click, () { this.$message.warning(权限不足无法执行删除操作); }); }); }, vueTemplateRoot: user-list // Vue组件的template ID } ]; // 配置SDK选项 webRabcPermissionSdkOptions.specialPermiss specialPermissArr; // ...其他基础配置 // 启动权限控制 const webRabc new webRabcPermisson(webRabcPermissionSdkOptions); webRabc.start({/* 配置参数 */});工具函数说明callBackFunc中提供的tools对象包含常用DOM操作方法$getById(el)通过ID获取元素$query(el)通过选择器获取单个元素$queryAll(el)通过选择器获取多个元素$getTagName(el)通过标签名获取元素案例3多角色权限合并处理 场景需求当用户同时拥有多个角色时需要合并不同角色的权限设置实现更复杂的权限控制逻辑。实现步骤获取用户角色权限从后端接口获取用户拥有的所有角色权限合并权限配置将不同角色的权限配置合并到havePermiss和noPermiss数组设置执行顺序通过actionOrder配置权限执行优先级代码示例// 从后端获取用户角色权限 ajax(get, /api/user/permissions, { userId: 123 }).then(res { const { havePermissions, noPermissions } res.data; // 转换为SDK所需的权限格式 const havePermissArr havePermissions.map(perm { const dto new getNewPermissionSimpleDTO(); dto.describe perm.name; dto.eleIdOrClass perm.selector; dto.resultType show; // 显式指定显示 dto.routerPath perm.route; return dto; }); const noPermissArr noPermissions.map(perm { const dto new getNewPermissionSimpleDTO(); dto.describe perm.name; dto.eleIdOrClass perm.selector; dto.resultType hidden; dto.routerPath perm.route; return dto; }); // 配置SDK选项 webRabcPermissionSdkOptions.havePermiss havePermissArr; webRabcPermissionSdkOptions.noPermiss noPermissArr; webRabcPermissionSdkOptions.actionOrder [doNoPermiss, doHavePermiss]; // 执行顺序先处理不可见权限再处理可见权限 // 初始化并启动权限控制 const webRabc new webRabcPermisson(webRabcPermissionSdkOptions); webRabc.start({/* 配置参数 */}); });权限合并策略SDK内部会自动对havePermiss和noPermiss进行diff去重规则如下当同一路由下的同一元素同时出现在两个数组中时noPermiss优先级高于havePermiss不同路由或不同元素的权限配置会分别处理specialPermiss特殊权限不受上述规则影响总是最后执行高级配置与最佳实践 执行计划选择SDK提供两种执行计划可根据项目需求选择执行计划描述适用场景SET_TIMEOUT通过定时器轮询检查兼容性要求高的项目OB_SERVER通过MutationObserver监控DOM变化现代浏览器性能更优性能优化建议精确设置路由匹配避免使用/作为routerPath减少不必要的DOM检查优先使用ID选择器eleIdOrClass尽量使用ID选择器#id提高查询效率合理设置节流时间根据项目复杂度调整millisec和delay参数平衡响应速度和性能避免过度权限配置只配置需要控制的元素减少DOM操作次数调试与监控通过getSdkInfo()方法可获取SDK执行状态方便调试console.dir(webRabc.getSdkInfo());总结web-RABC-Permissions-sdk提供了灵活且强大的按钮级权限控制方案通过本文介绍的3个案例你可以快速掌握从基础隐藏控制到复杂多角色权限合并的实现方法。该SDK采用配置化方式无需侵入业务代码即可实现精细的权限管理是后台管理系统权限控制的理想选择。要获取更多示例和完整使用说明可以参考项目中的README.md文档或通过以下命令获取完整项目git clone https://gitcode.com/gh_mirrors/we/web-RABC-Permissions-sdk【免费下载链接】web-RABC-Permissions-sdk后台管理系统RABC通用权限控制规范与规范代码实施js-SDK包含 节点/按钮/路由 等控制 支持hidden项目地址: https://gitcode.com/gh_mirrors/we/web-RABC-Permissions-sdk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表