ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、概述 平台支持按钮权限;按钮包括表单操作按钮和列表中的的动作按钮,甚至是标签页;它控制了某个角色获得授权的受控按钮,在需要做按钮管控的业务中,这个设定将生效,如果压根不需要管控的业务,则这个设定没什么意义了; 所有的需要管控的按钮,都需要先定义为按钮权限项,然后赋值授权给指定角色;通过这种定义方式,就能得到某个账号得到含有受控按钮的**页面内**授权的按钮; ### **管理界面** ![](https://img.kancloud.cn/f0/ec/f0ece27a7b7f8d2bf538783550546803_1366x657.png) ## 二、数据来源 在业务包中,增加一个针对某个按钮项(页面中)的按钮权限定义类,举例如下; ``` @RayButtonLimitDefinition(value = { // @RayButtonLimitDefinitionPageButton(containerGroup = "系统管理", containerLabel = "账号管理", containerPageRoute = "manageStaff", buttonControlLabel = "新增账号", buttonControlId = "addButton"), // @RayButtonLimitDefinitionPageButton(containerGroup = "系统管理", containerLabel = "账号管理", containerPageRoute = "manageStaff", buttonControlLabel = "删除账号", buttonControlId = "removeButton")// }) public class RayFrameworkButtonLimitDefinition { } ``` >[danger] 这种数据配置类可以无限增加,系统启动的时候,会依据注解扫描; ## 三、业务使用 ### **后端代码** 业务代码中,通过api访问,获得当前账号在当前页面中已授权的受控按钮范围; ``` @Autowired private SharedStaffLimitService sharedStaffLimitService; List<String> authorizedButtons = sharedStaffLimitService.authorizedControlledButtonsOfSpecPage(model.getCurLoginData().getCurStaffId(),"managStaff"); ``` 实例: ``` model.setCurAuthorizedControlledButton(sharedStaffLimitService.authorizedControlledButtonsOfSpecPage(model.getCurLoginData().getCurStaffId(), "manageStaff")); ``` ### **前端代码** 前端先约定好当前页面受控按钮标识ID,获取到后端提供的接口中已授权的按钮标识ID,约定的按钮标识ID与接口中返回的已授权按钮标识ID比对,能找到的,则是已授权,必须显示,否则就隐藏; > 注意: > 1、接口返回字段curAuthorizedControlledButton中以数组形式存放当前已授权按钮标识,用逗号隔开了; > 2、比对的按钮标识符,为权限定义的时候,按钮标识数据项;