//返回所有菜单分类
function unlimitedForLayer ($cate, $name = 'child', $pid = 0) {
$arr = array();
foreach ($cate as $v) {
if ($v['pid'] == $pid) {
$v[$name] = unlimitedForLayer($cate, $name, $v['id']);
$arr[] = $v;
}
}
return $arr;
}
function getAllMenu(){
$model = M('auth_rule'); //从数据库读取菜单
$cate = $model->where('ismenu = 1')->order('id asc')->select(); //读取用作菜单显示的
//var_dump($cate);die;
$menu=unlimitedForLayer($cate);
//var_dump($model->_sql());
//var_dump($menu);die;
return $menu;
}
function getMenuList($auth_id){
//根据角色权限过滤菜单
$menu_list = getAllMenu(); //获取所有菜单
//print_r($menu_list);die;
if($auth_id!='1'){ //超级管理员加载所有菜单
$auth = new \Think\Auth();
//$authList = $auth->getGroups($auth_id); //根据用户id获取用户组,返回值为数组
//$role_right = $authList[0]['rules']; //得到有效权限id
//var_dump($role_right);die;
//$role_right = explode(',', $role_right); //形成数组
$authList = $auth->getAuthList($auth_id,1); //获取用户需要验证的所有有效规则列表
$map['name']=array('in',$authList);
$role_right = M('auth_rule')->where($map)->getField('id',true);
foreach($menu_list as $k=>$v){
foreach ($v['child'] as $kk=>$vv){
if(!in_array($vv['id'], $role_right)){ //判断数组是否在菜单表里面
unset($menu_list[$k]['child'][$kk]);//过滤菜单
}
}
}
}
return $menu_list;
}5.基于节点的权限分配。 //_initialize自动运行方法,在每个方法前,系统会首先运动这个方法
public function _initialize()
{
$ctl = CONTROLLER_NAME;
$act = ACTION_NAME;
$auth_id = session('auth_id'); //接受session
if($auth_id==null){
//$this->redirect("/Home/index");
$this->error('请先登录以后再操作!',U('/Home/index'));
}
//无需验证的操作
$uneed_check = array('login','logout','vertifyHandle','vertify','imageUp','upload','login_task');
$uneed_check_cont = array('Index','Main');
if(in_array($ctl,$uneed_check_cont) || $auth_id == '1'){
//后台首页控制器无需验证,超级管理员无需验证
return true;
}elseif(strpos('ajax',$act) || in_array($act,$uneed_check)){
//所有ajax请求不需要验证权限
return true;
}else{
$auth = new \Think\Auth();
if(!$auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME, $auth_id)){
$this->error('没有权限');
}
}
}6.部分截图ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。