zoukankan      html  css  js  c++  java
  • PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证

    权限验证

    1、登录控制器

    2、通过tp验证码类生成验证码图片

    3、在管理员模型增加登录验证规则

    4、后台中所有的控制器必须先登录才能访问

    思路:在访问任何一个控制器之前都判断一个session即可,=>增加一个父控制器验证Session

      

        让所有后台的控制器【除了Login控制器之外的】都继承自这个控制器

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

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

      

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

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

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

    /******** 获取当前管理员所拥有的前两级的权限 ***********/
        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中使用四维函数输出

     

    7、在管理员模型增加一个退出账号功能 => 删除session

     

     

  • 相关阅读:
    Silverlight 置于悬浮层之下 背景透明的方法
    做流媒体服务器需要什么(FMS)
    Silverlight WebClient 上传实现
    Silverlight WCF 初尝小结
    自动判断页面上的图片是否加载成功,不成功替换为默认图片
    HTTP PUSH技术原理,结合ASP.NET实现以及评述
    AJAX 请求队列实现
    关于COOKIES需要注意的一点
    Silverlight WCF 上传实现
    Silverlight 上传 大文件分块上传
  • 原文地址:https://www.cnblogs.com/zixuanfy/p/7134344.html
Copyright © 2011-2022 走看看