网站后台权限管理

数据库:


菜单表:

nba2k2球员数据


菜单与角色关系表:

nba2k2球员数据


代码:


登入后台构造函数将关系表 菜单id 转化为数组 赋值全局

/**
     * 在执行所有动作之前,先执行这个方法
     * @param \yii\base\Action $action
     * @return bool true-继续执行/false-终止执行
     */
    public function beforeAction($action)
    {
        /* 后台栏目 */
        $this->menu = $this->getMenus();
        // var_dump($this->menu);exit;

        /* 获取当前访问的 controller/action */
        $controller = $this->id;
        $action     = $this->action->id;
        $rule  = strtolower($controller.'/'.$action);
        // var_dump($rule);exit;
                //将所属角色权限取出与当前url规则对比
        if (!$this->checkRule($rule)){
            echo 'Access Denied';
            return false;
        }
        return true;
    }
    /**
     * ---------------------------------------
     * 权限检测
     * @param string  $rule    检测的规则
     * @return boolean
     * ---------------------------------------
     */
    final protected function checkRule($rule)
    {
        if (!in_array($rule, $this->menu)) {
            return false;
        }
        return true;
    }

    /**
     * ---------------------------------------
     * 获取控制器菜单数组,二级菜单元素位于一级菜单的'_child'元素中
     * @return array $menus
     * ---------------------------------------
     */
    final public function getMenus()
    {
        $menu = [];
        $rows = AdminMenu::getAdminMenu();
        foreach ($rows as $key => $val) {
            if (in_array($val['id'], $this->menuid)) {
                if (!in_array($val['url'], $menu)) $menu[] = $val['url'];
            }
        }
        return $menu;
    }


nba2k2球员数据
请先登录后发表评论
  • 最新评论
  • 总共0条评论