權限驗證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