如果有人用過laravel,那么一定知道中間件,我們用他做授權(quán)管理特別爽。我在使用CI時(shí),也在想CI中是否也有類似laravel中間件的方法。
我一開始用使用繼承控制器,在父類的__construct方法里面做授權(quán)判斷。
后來隨著我對(duì)CI的了解,發(fā)現(xiàn)有個(gè)叫鉤子的東西。我目前的理解是這個(gè)鉤子是在運(yùn)行我們創(chuàng)建的控制前執(zhí)行的方法。
使用的方法記錄下:
1、在config.php中打開鉤子擴(kuò)展

設(shè)置為TRUE
2、在hooks.php中添加鉤子配置

$hook['post_controller_constructor'][] = array(
'class' => 'ManageAuth', //類名
'function' => 'auth', //執(zhí)行的方法
'filename' => 'ManageAuth.php', //文件名
'filepath' => 'hooks' //文件路徑,默認(rèn)是application/hooks
);
3、創(chuàng)建你的鉤子程序文件ManageAuth.php

class ManageAuth
{
private $CI;
public function __construct()
{
$this->CI = &get_instance(); //獲取CI對(duì)象
}
//權(quán)限認(rèn)證
public function auth()
{
$this->CI->load->helper('url');
if(preg_match("/welcome.*/i",uri_string()))
{
//需要進(jìn)行權(quán)限檢查的url
$this->CI->load->library('session');
if(!$this->CI->session->userdata('username'))
{
//用戶未登錄
redirect('login');
return;
}
}
}
最后再附上 鉤子的官方文檔,寫的很清楚。