将权限控制细化到组件, 轻松控制每一个 Button~

介绍

  • Owl Admin 是一个基于 Laravelamis 的后台管理系统 👉 演示地址

  • amis 是百度开源一个低代码前端框架,它使用 JSON 配置来生成页面,可以减少页面开发工作量,极大提升效率。


原理

OwlAdmin 通过 amis 生成页面,通过 Laravel 提供数据接口,采用前后端分离的方式实现。

在响应给前端前, OwlAdmin 会对 amis 的页面结构进行一次处理, 通过 permission 属性来控制页面中的组件是否渲染。

简单示例

amisMake()->Form()->body([
    amisMake()->TextControl('title', '分类名称')->required(),
    amisMake()->SwitchControl('state', '状态')->value(true),
    amisMake()->ImageControl('image', '图片'),
]);

上面的代码会生成如下的页面:

示例

增加权限控制

amisMake()->Form()->body([
    amisMake()->TextControl('title', '分类名称')->required(),
    amisMake()->SwitchControl('state', '状态')->value(true),
    // 添加 permission 方法
    amisMake()->ImageControl('image', '图片')->permission('article.form.image'),
]);

在没有对应权限的情况下,该组件将 不会被渲染

示例

这个方法可以做到那些事情?

根据权限控制 🎉 任何层级的任何组件,例如:

amisMake()->Form()->body([
    amisMake()->TextControl('title', '分类名称')->required(),
    amisMake()->Combo('content')->items([
        amisMake()->TextControl('column1', '字段1')->permission('xxx'), // 控制字段中的某个子项
        amisMake()->SwitchControl('column2', '字段2'),
    ])->permission('xxx'), // 只控制表单中的某个字段
])->permission('xxx'); // 直接控制整个表单

大到整个页面/弹窗, 小到某个按钮/表单/表格/字段, 任何层级的任何组件 都可以通过这个方法控制。


写在最后

你现在开发后台管理系统的时候, 是不是经常会遇到这些问题?

  • ☹️ 权限管理难以细化, 还在为控制几个按钮而写一堆代码
  • 😣 前后端分离, 开发效率低下
  • 🤯 使用 Laravel AdminDcat Admin 等后台管理框架, 基础功能开发迅速, 但是一旦遇到复杂的业务场景, 自定义页面写到吐血

😏如果你有这些痛点, 抓紧试试 👉 Owl Admin ~

本作品采用《CC 协议》,转载必须注明作者和本文链接
海到无涯天作案,山登绝顶我为峰
Slowlyo
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 24
DogLoML

666

7个月前 评论

这么细 :joy: :sweat_smile:

7个月前 评论
Slowlyo (楼主) 7个月前

就是不知道能坚持多久

7个月前 评论
Slowlyo (楼主) 7个月前

demo站的菜单都是空的了,坏了

7个月前 评论
Slowlyo (楼主) 7个月前
如此甚好 (作者) 7个月前
Slowlyo (楼主) 7个月前

file 可视化编辑器,点创建php代码后,点浏览器的返回按钮,这个框就关不掉了

7个月前 评论
Slowlyo (楼主) 7个月前

此框架是不是没有使用 iframe 啊?

7个月前 评论
Slowlyo (楼主) 7个月前

看起来非常不错啊

7个月前 评论

所以如果字段是json格式,可以很方便的curd吗

6个月前 评论
Slowlyo (楼主) 6个月前

有必要吗?

6个月前 评论
Slowlyo (楼主) 6个月前
Slowlyo (楼主) 6个月前

permission 具体怎么使用啊 我想控制按钮和字段的显示 我没有看明白啊 :sob:

3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!