1. 程式人生 > >PHP.48-TP框架商城應用實例-後臺23-權限管理-權限驗證

PHP.48-TP框架商城應用實例-後臺23-權限管理-權限驗證

商城 strong pre model 必須 查看 數據 parent col

權限驗證

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

技術分享

PHP.48-TP框架商城應用實例-後臺23-權限管理-權限驗證