后台菜单和权限管理
Posted wazh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后台菜单和权限管理相关的知识,希望对你有一定的参考价值。
主要php文件:
1,admin/includes/inc_menu.php ECSHOP管理中心菜单数组--配置菜单组及URL
2,languages/zh_cn/admin/common.php ECSHOP管理中心共用语言文件--配置菜单显示名
3,admin/includes/inc_priv.php ECSHOP权限对照表--将菜单action与权限绑定
4,languages/zh_cn/admin/priv_action.php ECSHOP权限名称语言文件---配置权限显示的中文名
主要数据表:ecs_admin_action
这里用后台商品管理来说明这几个配置文件:
权限:
1.ecs_admin_action 管理员权限表。权限以分组的形式存储,首先要添加一个权限管理的一级分组节点(此权限分组节点仅作为分组归类,没有实际权限控制作用),再添加所属的权限名。
配置摘要:
2.priv_action.php 权限名称语言文件。设置权限的中文名称,一般用于在修改角色权限时显示中文权限名称。
配置摘要:
菜单:
3.inc_menu.php 管理中心菜单数组。显示在后台左侧的菜单项。以多维数组形式来表示菜单的分级,第一维即是顶级菜单。
配置摘要:
4.common.php 管理中心共用语言文件。设置inc_menu中设置的菜单的中文名称,每一维都要设置名称。
配置摘要:
将菜单链接的Action与权限关联:
5.inc_priv.php 权限对照表。一个菜单指向的Action页可能只使用一个权限,也可能使用多个权限,Action对应多个权限时,使用数组来表示。
如代号02_goods_add的商品添加Action只调用了goods_manage权限,因此配置为:$purview[‘02_goods_add‘] = ‘goods_manage‘; 而代号01_goods_list的商品列表页包含的操作多,因此调用多个权限:$purview[‘01_goods_list‘]= array(‘goods_manage‘, ‘remove_back‘);
配置摘要:
//商品管理权限 $purview[‘01_goods_list‘] = array(‘goods_manage‘, ‘remove_back‘); $purview[‘02_goods_add‘] = ‘goods_manage‘; $purview[‘03_category_list‘] = array(‘cat_manage‘, ‘cat_drop‘); //分类添加、分类转移和删除 $purview[‘05_comment_manage‘] = ‘comment_priv‘; $purview[‘06_goods_brand_list‘] = ‘brand_manage‘; $purview[‘08_goods_type‘] = ‘attr_manage‘; //商品属性 $purview[‘11_goods_trash‘] = array(‘goods_manage‘, ‘remove_back‘); $purview[‘12_batch_pic‘] = ‘picture_batch‘; $purview[‘13_batch_add‘] = ‘goods_batch‘; $purview[‘14_goods_export‘] = ‘goods_export‘; $purview[‘15_batch_edit‘] = ‘goods_batch‘; $purview[‘16_goods_script‘] = ‘gen_goods_script‘; $purview[‘17_tag_manage‘] = ‘tag_manage‘; $purview[‘50_virtual_card_list‘] = ‘virualcard‘; $purview[‘51_virtual_card_add‘] = ‘virualcard‘; $purview[‘52_virtual_card_change‘] = ‘virualcard‘; $purview[‘goods_auto‘] = ‘goods_auto‘;
在Action中判断管理员是否有改访问操作权限:
ec内置两个函数:
- admin_priv(权限名); 权限不通过时跳转的方式提示;
- check_authz_json(权限名);权限不通过时返回json提示数据,一般与make_json_result 或 make_json_error 配合返回数据/错误信息使用。
6.admin/goods.php
代码摘要:
经验分割线
【注意】
1,菜单组的权限控制不一定要与权限绑定,可以直接使用admin_priv(action_code)控制菜单指向的action的访问权限。
2,action_code就是权限名。
添加一个新后台菜单权限的流程:
1.在ecs_admin_action表中添加action信息;
action_id | parent_id | action_code |
222 | 0 | test_action |
223 | 222 | test_child |
2.inc_menu.php中添加菜单action和url
#[菜单组名][自定义菜单的action名]=action的url
$modules[‘17_action_test‘][‘a_test_action‘] = ‘test_action.php?act=list‘; $modules[‘17_action_test‘][‘a_test_child‘] = ‘test_action.php?act=test_child‘;
3.在common.php中添加菜单中文名
#对应上述菜单的配置名
$_LANG[‘17_action_test‘] = ‘测试菜单‘; #顶级菜单(菜单组名) $_LANG[‘a_test_action‘] = ‘测试父权限 ‘; #子菜单 $_LANG[‘a_test_child‘] = ‘测试子权限 ‘;
*此时刷新可以看到管理列表多出了测试菜单组。
4.在inc_priv.php新增对应 该action的权限对照名
#权限对照名=权限名(action_code),权限对照名要对应菜单action名
$purview[‘a_test_action‘] = ‘test_action‘; $purview[‘a_test_child‘] = ‘test_child‘;
5.在priv_action.php为action权限配置一个中文名。
#权限名(action_code)=权限中文名
$_LANG[‘test_action‘] = ‘测试父权限 ‘; $_LANG[‘test_child‘] = ‘测试子权限 ‘;
*此时在角色管理可以看到多出了这两个权限中文名。
6.编辑新增admin/test_action.php,代码如下:
1 <?php 2 3 /** 4 * ECSHOP 权限管理测试页 5 * $Author: GaZeon 6 */ 7 define(‘IN_ECS‘, true); 8 9 require(dirname(__FILE__) . ‘/includes/init.php‘); 10 11 12 if ($_REQUEST[‘act‘] == ‘list‘) 13 { 14 /* 检查权限 */ 15 admin_priv(‘test_action‘); 16 17 echo ‘访问权限通过,欢迎来到父权限测试‘; 18 } 19 else if ($_REQUEST[‘act‘] == ‘test_child‘) 20 { 21 /* 检查权限 */ 22 admin_priv(‘test_child‘); 23 24 echo ‘访问权限通过,欢迎来到子权限测试‘; 25 }
可以自行使用不同的角色测试。
3,languages/zh_cn/admin/common.php ECSHOP管理中心公用语言配置
以上是关于后台菜单和权限管理的主要内容,如果未能解决你的问题,请参考以下文章