资源维护
提示
资源是整个系统中,最基础,最重要的功能,请一定要认真理解本节!
资源维护功能用于开发者或运营者在后台创建配置资源数据。
涉及的表
- def_resource
- def_resource_api
注意
在代码中增加、修改或删除Controller层接口(API、URI)后,需要重启服务,才能在资源关联的接口被正常选择。
若你的接口地址发生了变更,需要重新在资源维护页面配置新接口!
如:第一版配置了 /menu/save 接口,后期调整改为 /menu/saveMenu 接口,需要在此页修改为 /menu/saveMenu ,并保存数据!
登录用户拥有的菜单权限由后端接口(ResourceController#myRouter)控制,前端仅需将后端返回的菜单数据全部展现出来。后端返回给前端的菜单数据,都是用户有权访问的菜单。
提示
若用户访问了没有权限的菜单时,系统不会跳转到401页面,而是404页面。
按钮权限由前端的 权限指令(v-hasPermission) 或 权限属性(auth、authMode) 控制,后端在登录时会将用户拥有的资源编码数据提供给前端。
接口权限由后端lamp-gateway的拦截器(AuthenticationFilter)控制。
用于控制按钮权限的资源编码可以是不同的类型(菜单、视图、按钮、字段4种类型)。
<button v-hasPermission=['任意类型的资源编码']>save</button>
重要字段解释
code
全局唯一的资源编码。编码规则:按资源层级结构逐级编码,并使用 : 作为分隔符。
建议以view、add、edit、delete、export、import、download、upload等关键词结尾。
resource_type
资源类型:应用、菜单、视图、按钮、字段、接口、数据。
应用:之前有考虑过把应用也当做一种资源,但最终将应用独立出来在应用维护和应用授权管理实现。菜单:即系统左侧显示的菜单,不管是1级、2级还是N级菜单,点击之后是折叠效果(有些系统层折叠菜单为目录)还是跳转页面,在本系统都统称为菜单。
后面文档中可能会以目录来表示该菜单是折叠菜单。
视图:即隐藏的菜单。(视图权限由后端返回用户拥有的权限列表+前端控制按钮的显隐)
如:查看企业信息。
按钮:需要控制权限的功能性按钮。
如:新增、编辑、删除等按钮。(按钮权限由后端返回用户拥有的权限列表+前端控制按钮显隐)
提示
注意:视图和按钮类型的资源编码,都可以绑定在“按钮”上,视图一般是:点击后需要跳转到隐藏菜单里面的按钮;按钮一般是:点击后需要弹窗或直接请求后台请求的按钮。
字段:表单的字段或列表的字段。(字段权限由后端返回用户拥有的权限列表,前端控制字段显隐)
如:列表页的“金额”字段,只有财务和领导能看,其他人不能看(不能看又分为隐藏或脱敏等等情况); 表单页的“编码”字段,领导能编辑,其他人不能编辑。
接口:又名API、URI。接口类型并没有在界面上体现出来,体现在接口字段上,是可以关联到任意一种资源,只要授权了资源,便可访问此接口。接口权限由后端控制。
如:绕过前端,直接发起请求。
数据:数据权限,数据权限只能配置在菜单或视图下级,比如可以在菜单"消息管理"下配置"数据",要配置几个数据资源,完全取决于你们的业务需要控制控制“消息管理”的数据。如,你只想控制查询本人、查询本单位、查询全部数据3个维度,则只需要在“消息管理”下配置3个“数据”资源。
自定义的DATA_SCOPE_TEST实现类:
name
资源名称。资源类型为菜单或视图时,名称在同一应用下必须唯一。
parent_id
上级资源。
- 视图下不能添加菜单
- 按钮下不能添加菜单、视图、数据
- 字段下不能添加任何子资源
- 数据下不能添加任何子资源
open_with
打开方式。菜单或视图的打开方式,可选值为:组件、内链、外链。
组件:在框架内打开组件页面
内链:在框架内打开网页地址
外链:新开窗口打开网页地址
path
地址栏路径。资源类型为菜单或视图时配置。该字段可以填写以下值:
- 地址栏路由地址:1级菜单必须是绝对地址,即 / 开头,其他菜单可以是绝对地址或相对地址(相对上级菜单)。
- http地址:open_with选择外链时,该字段需配置为 http地址,点击后会新开一个浏览器页面,跳转到指定地址。
component
组件。页面的代码所在位置。
- 页面组件地址:path配置为”地址栏路由地址“时,component需要配置为对应的前端页面代码。
- LAYOUT:若当前的菜单是”目录“( 只具备折叠效果的菜单 ),你可以将component配置为LAYOUT或其他任意字符串,若设置为任意字符,后台在返回路由信息时,会自动将component字段设置为LAYOUT 。
- IFRAME:当前菜单是外链时,可以将component配置为IFRAME。当菜单为内链时,将path地址配置为路由地址,同时将component配置为http链接,后台在返回路由信息时,会自动将frameSrc参数赋值,同时将component字段设置为IFRAME 。
redirect
重定向。
is_general
是否公共资源。设置为true,表示无需授权即可访问。
state
状态。true:启用;false:禁用。 禁用后,资源不可用。
sub_group
分组。可以通过此参数来控制一个系统,有多组菜单。
meta_json
元数据。路由扩展的meta参数,RouteMeta支持什么参数,这里就配置成什么参数即可。
// 你可以在这个类中扩展更多的元数据,并在业务代码中合适的位置读取新增的元数。
interface RouteMeta extends Record<string | number | symbol, unknown> {
// 菜单排序,只对第一级有效
orderNo?: number;
// 路由title 一般必填
title: string;
// 动态路由可打开Tab页数
dynamicLevel?: number;
// 动态路由的实际Path, 即去除路由的动态部分;
realPath?: string;
// 是否忽略权限,只在权限模式为Role的时候有效
ignoreAuth?: boolean;
// 可以访问的角色,只在权限模式为Role的时候有效
roles?: RoleEnum[];
// 是否忽略KeepAlive缓存
ignoreKeepAlive?: boolean;
// 是否固定标签
affix?: boolean;
// 图标,也是菜单图标
icon?: string;
// 内嵌iframe的地址
frameSrc?: string;
// 指定该路由切换的动画名
transitionName?: string;
// 隐藏该路由在面包屑上面的显示
hideBreadcrumb?: boolean;
// 隐藏所有子菜单
hideChildrenInMenu?: boolean;
// 如果该路由会携带参数,且需要在tab页上面显示。则需要设置为true
carryParam?: boolean;
// Used internally to mark single-level menus
single?: boolean;
// 当前激活的菜单。用于配置详情页时左侧激活的菜单路径
currentActiveMenu?: string;
// 当前路由不再标签页显示
hideTab?: boolean;
// 当前路由不再菜单显示
hideMenu?: boolean;
isLink?: boolean;
// 忽略路由。用于在ROUTE_MAPPING以及BACK权限模式下,生成对应的菜单而忽略路由。2.5.3以上版本有效
ignoreRoute?: boolean;
// 是否在子级菜单的完整path中忽略本级path。2.5.3以上版本有效
hidePathForChildren?: boolean;
// 菜单上显示的 文字 或 小圆点 的样式
type?: 'primary' | 'error' | 'warn' | 'success';
// 是否在菜单上显示 文字
content?: string;
// 是否在菜单显示 小圆点
dot?: boolean;
}
接口
数据存在def_resource_api表。表示该资源关联的URI接口。

选择弹框中的接口地址来源于:SystemApiScanController#scan
、/anyone/systemApiScan

提示
增加、修改或删除接口后,需要重启项目,才能加载出接口。
若你的接口地址变更,需要重新在此页面配置接口! 如:第一版配置了 /menu/save 接口,后期调整改为 /menu/saveMenu 接口,需要在此页面删除原来的 /menu/save 接口,然后重新选择 /menu/saveMenu ,并保存数据!
【选择api】界面的【服务名】字段是通过网关提供的接口实时查询成功注册到nacos中的服务,新建的服务需要在lamp-gateway-server.yml中配置路由信息。
“录入”和“选择”的区别在于,录入可以方便开发者填写含有通配符的uri接口地址(如: /base/user/** ),而选择只能选择代码中已经编写好的接口。
field_is_secret
是否脱敏。 暂时没有实现。
field_is_edit
是否可以编辑。暂时没有实现。
功能讲解

注意
在此配置了资源后,用户还是无法访问该资源,需要在开发运营系统 - 应用授权管理,给需要此资源的企业授权后,登陆企业的租户管理员账号,在基础平台 - 角色授权管理将资源和角色进行绑定,并将角色分配给员工,员工才拥有刚新增的资源权限。
新增:点击新增根节点或新增按钮后,根据页面上的提示和校验规则,填写表单数据后,点击表单右上方或正下方的保存按钮保存数据。
编辑:点击编辑按钮后,根据页面上的提示和校验规则,填写表单数据后,点击表单右上方或正下方的保存按钮保存数据。
删除:删除会删除当前节点以及其子节点。
移动:将某个节点移动到其他节点,作为其他节点的子节点。
- 不能移动到他的父节点
- 不能移动到他自己
- 不能移动到他的所有子孙节点
❗️❗️❗️若评论区无法显示,请使用"手机热点"或"科学上网"。