**CodeIgniter通過hook的方式實現簡單的許可權控制
根據自己的實際情況,需要兩個檔案,一個是許可權控制類,Acl,另外一個是許可權配置的檔案acl.php放在了config這個目錄下。
Acl這個類放在了application/hook/acl.php。通過application/config/config.php檔案開啟hook,並且配置config這個目錄下的hook.php檔案。
1、開啟hook功能,config.php這個檔案
/* |-------------------------------------------------------------------------- | Enable/Disable System Hooks |-------------------------------------------------------------------------- | | If you would like to use the `hooks` feature you must enable it by | setting this variable to TRUE (boolean). See the user guide for details. | */ $config[`enable_hooks`] = TRUE;
2、配置hook.php這個檔案
/* | ------------------------------------------------------------------------- | Hooks | ------------------------------------------------------------------------- | This file lets you define "hooks" to extend CI without hacking the core | files. Please see the user guide for info: | | http://codeigniter.com/user_guide/general/hooks.html | */ $hook[`post_controller_constructor`] = array( `class` => `Acl`, `function` => `auth`, `filename` => `acl.php`, `filepath` => `hooks` );
具體的引數說明可以參看文件的連結地址,這裡尤其要注意post_controller_constructor這個值,可以根據情況選擇不同的。
3、編寫許可權配置檔案acl.php放在config目錄下。
$config[`AUTH`] = array( SUPER_ADMIN => array( `admin` => array(`index`, `logout`), ), ADMIN => array( `admin` => array(`index`, `logout`), ), GUEST => array( `admin` => array(`index`, `logout`), ), );
這裡只是我根據自己的情況定義的,不是真實資料,根據自己的情況定。還有主要變數名字要交$config,這樣便於載入使用。
4、編寫具體的許可權控制Acl類
class Acl { private $url_model; private $url_method; private $CI; function Acl() { $this->CI =& get_instance(); $this->CI->load->library(`session`); $this->url_model = $this->CI->uri->segment(1); $this->url_method = $this->CI->uri->segment(2); } function auth() { $user = $this->CI->session->userdata(`USER`); if(empty($user)) $user->status = 0; $this->CI->load->config(`acl`); $AUTH = $this->CI->config->item(`AUTH`); if(in_array($user->status, array_keys($AUTH))){ $controllers = $AUTH[$user->status]; if(in_array($this->url_model, array_keys($controllers))){ if(!in_array($this->url_method, $controllers[$this->url_model])){ show_error(`您無權訪問該功能,該錯誤已經被記錄!點選<a href="`. site_url(`admin/logout`) .`">返回</a>`); } }else{ show_error(`您無權訪問該模組,該錯誤已經被記錄!點選<a href="`. site_url(`admin/logout`) .`">返回</a>`); } } else show_error(`錯誤的使用者型別,該錯誤已經被記錄!點選<a href="`. site_url(`admin/logout`) .`">返回</a>`); } }
整體上大體是這樣的形式,最後還是要根據自己的實際情況來確定。
需要注意的是:
$this->CI =& get_instance();
原文地址:http://blog.csdn.net/treesky/article/details/6587465
如何聯絡我:【萬里虎】www.bravetiger.cn
【QQ】3396726884 (諮詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/
相關文章
- 通過 VirtualApp 實現免 Root 許可權 HookAPPHook
- spring aop實現簡單的許可權控制功能Spring
- Laravel實現許可權控制Laravel
- Vue 前端應用實現RBAC許可權控制的一種方式Vue前端
- NODE + JWT + Mongo(簡單實現許可權管理)JWTGo
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- 基於vue的簡單許可權管理實現總結Vue
- 前端許可權控制系統的實現思路前端
- JEECG 簡單例項講解許可權控制單例
- 通過 recompose 實現 react router4 許可權React
- PostgreSQL_通過schema控制使用者許可權SQL
- vue許可權路由實現方式總結Vue路由
- [WCF許可權控制]通過擴充套件自行實現服務授權[提供原始碼下載]套件原始碼
- spring aop實現許可權控制,路徑控制Spring
- HIVE的許可權控制和超級管理員的實現Hive
- SpringBoot(一) 如何實現AOP的許可權控制Spring Boot
- [WCF許可權控制]透過擴充套件自行實現服務授權套件
- vue許可權路由實現方式總結二Vue路由
- Linux的許可權控制Linux
- 許可權之選單許可權
- TP 基於選單的許可權控制CMS框架框架
- 前端學習(2590):前端許可權的選單控制前端
- Docker安全:通過Docker提升許可權Docker
- Django許可權機制的實現Django
- Elasticsearch 許可權控制Elasticsearch
- 資料分析的許可權控制
- Solaris下控制ftp的許可權FTP
- 簡單說 通過CSS實現 文字漸變色 的兩種方式CSS
- SpringMVC使用攔截器實現許可權控制SpringMVC
- android 6.0許可權機制的簡單封裝(支援批量申請許可權)Android封裝
- [WCF許可權控制]基於Windows使用者組的授權方式[上篇]Windows
- linux許可權簡單介紹Linux
- element-admin通過後端動態路由表實現使用者許可權控制(一)後端路由
- Atlas 2.1.0 實踐(4)—— 許可權控制
- 打造自己的系統許可權控制
- OGG的加密和許可權控制加密
- 許可權控制下的SQL寫法SQL
- React基於RBAC的許可權控制React