这类像 system:menu:list
、system:menu:add
的字符串,是在后台权限管理系统中常见的权限标识符(也叫权限编码、权限字符串),下面逐一解释:
一、它是什么?
这些是权限标识符(Permission Code / 权限字符串),用于:
用途 | 举例说明 |
---|---|
后台管理用户权限 | 判断用户是否有“新增菜单”、“查询菜单”权限 |
前端按钮级别控制 | 控制按钮是否显示,比如“添加菜单”按钮 |
接口权限控制 | 拦截接口请求,例如无权限用户访问 POST /menu/add 被拒绝 |
二、格式结构说明
以 system:menu:add
为例,它一般遵循格式:
模块:资源:操作
组成部分 | 示例 | 说明 |
---|---|---|
模块 | system | 所属模块,比如“系统管理” |
资源 | menu | 操作资源,比如“菜单” |
操作 | add | 执行的动作,比如“新增” |
三、每个代表什么意思?
权限标识符 | 意义 | 通常用于 |
---|---|---|
system:menu:list | 查看菜单列表 | 页面菜单初始化,展示菜单树 |
system:menu:query | 查询单个菜单 | 点开某个菜单进行详情 |
system:menu:add | 添加菜单 | 表单页面点击“新增”按钮 |
system:menu:edit | 修改菜单 | 编辑操作 |
system:menu:remove | 删除菜单 | 删除操作按钮或接口 |
四、在系统中一般怎么用?
1. 接口权限控制(后端拦截器使用):
例如 Spring Security、Shiro:
@PreAuthorize("hasAuthority('system:menu:add')")
@PostMapping("/menu/add")
public AjaxResult add(@RequestBody Menu menu) {
return menuService.add(menu);
}
只有拥有
system:menu:add
权限的用户才能访问这个接口。
2. 前端按钮显示控制(Vue、React)
<el-button
v-if="hasPermission('system:menu:add')"
@click="handleAdd"
>新增</el-button>
没权限的用户,前端页面不会显示“新增按钮”。
五、配合角色使用
通常这些权限标识符被分配到“角色”中,比如:
角色 | 拥有权限 |
---|---|
超级管理员 | 所有权限 |
系统管理员 | system:menu:* |
普通用户 | system:menu:list , query |
这样用户通过角色绑定权限标识,从而间接拥有了某些按钮/接口的访问能力。
小结
权限标识符 | 用途 |
---|---|
system:menu:list | 查询菜单列表权限 |
system:menu:add | 新增菜单权限 |
system:menu:edit | 编辑菜单权限 |
system:menu:remove | 删除菜单权限 |
本质:用于控制用户能访问哪些接口 / 按钮 |