PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证

权限验证php

一、登陆控制器html

二、经过tp验证码类生成验证码图片thinkphp

 

三、在管理员模型增长登陆验证规则数据库

四、后台中全部的控制器必须先登陆才能访问session

思路:在访问任何一个控制器以前都判断一个session便可,=>增长一个父控制器验证Session函数

  

    让全部后台的控制器【除了Login控制器以外的】都继承自这个控制器spa

五、在管理员访问后台的任何一个页面以前先到数据库中查看当前管理员所在的角色是否有权限访问这个页面code

  在权限模型中增长此检查方法,在父类登陆控制器中调用htm

  

六、后台左侧只显示当前管理员有权限访问的按钮blog

思路:取出当前管理员所拥有的前两级的权限,在左侧循环这些权限作为按钮!

在权限模型中增长获取当前管理员权限的方法

/******** 获取当前管理员所拥有的前两级的权限 ***********/
    public function getBtns()
    {
        // 先取出当前管理员所拥有的全部的权限
        $adminId = session('id');
        if($adminId == 1)
        {
            $priModel = M('privilege');
            $priData = $priModel->select();
        }
        else
        {
            // 取出当前管理员所在角色所拥有的权限
            $arModel = M('admin_role');
            $priData = $arModel->alias('a')
            ->field('DISTINCT c.id, c.pri_name,c.module_name,c.controller_name,c.action_name,c.parent_id')
            ->join ('LEFT JOIN __ROLE_PRI__ b ON a.role_id=b.role_id
                    LEFT JOIN __PRIVILEGE__ c ON b.pri_id=c.id')
            ->where(array(
                    'a.admin_id' => array('eq', $adminId),    
            ))->select();
        }
        /*************** 从全部的中选出前两级 *******************/
        $btns = array();        //前两级权限
        foreach ($priData as $k => $v)
        {
            if($v['parent_id'] == 0)
            {
                //再找这个顶的子级
                foreach ($priData as $k1 => $v1)
                {
                    if($v1['parent_id'] == $v['id'])
                    {
                        $v['children'][] = $v1;
                    }
                }
                $btns[] = $v;
            }
        }
        return $btns;
    }

 在menu.html中使用四维函数输出

 

七、在管理员模型增长一个退出帐号功能 => 删除session

相关文章
相关标签/搜索