一句话总结: 四表两组关系,一个多对多(权限和用户组之间)(多对多需要3个表),一个一对多(用户和用户组之间)
实际上使用Auth是需要4张表的(1.用户表 2.用户组表 3.组表 4.权限表)
各个商家后台进制访问代码如下:
把模块/控制器/方法名传过来之后,先检查用户组是否禁用然后通过in_array函数在权限表里面查找模块/控制器/方法名否则就是没有权限不能访问。
function check_auth($mca){ $userinfo=return_admin_info('admin_userinfo'); if($userinfo['issup']!=1){ $groupinfo=get_model_one(array('uid'=>$userinfo['uid']), 'user_group_access');//用户分组表 $group_status=get_onerecord(array('id'=>$groupinfo['group_id']), 'user_group', 'status');//分组表 $group_arr=get_model_one(array('id'=>$groupinfo['group_id']), 'user_group', 'rules,menus'); if($group_status==0){ echo '用户组已禁止请联系管理员'; unset_admin_info('admin_userinfo'); exit; } if($groupinfo['group_id']){ $rules=$group_arr['rules']; if($rules){ $rules=json_decode($rules); $info=get_model_one(array('name'=>$mca), 'user_auth_rule'); if($info && $info['isverify']==1 && !in_array($mca, $rules)){ echo '你没有权限';unset_admin_info('admin_userinfo');exit; } return true; }else{ echo '你没有权限,请联系管理员';unset_admin_info('admin_userinfo');exit; } }else{ echo '你没有权限,请联系管理员';unset_admin_info('admin_userinfo');exit; } } }