CI(CodeIgniter )钩子的使用

如果有人用过laravel,那么一定知道中间件,我们用他做授权管理特别爽。我在使用CI时,也在想CI中是否也有类似laravel中间件的方法。

我一开始用使用继承控制器,在父类的__construct方法里面做授权判断。

后来随着我对CI的了解,发现有个叫钩子的东西。我目前的理解是这个钩子是在运行我们创建的控制前执行的方法。

使用的方法记录下:

1、在config.php中打开钩子扩展

设置为TRUE

2、在hooks.php中添加钩子配置

CI(CodeIgniter )钩子的使用_第1张图片
$hook['post_controller_constructor'][] = array(
    'class' => 'ManageAuth',            //类名
    'function' => 'auth',               //执行的方法
    'filename' => 'ManageAuth.php',     //文件名
    'filepath' => 'hooks'              //文件路径,默认是application/hooks
);

3、创建你的钩子程序文件ManageAuth.php

CI(CodeIgniter )钩子的使用_第2张图片
class ManageAuth
{
    private $CI;
    public function __construct()
    {
        $this->CI = &get_instance();  //获取CI对象
    }
    //权限认证
    public function auth()
    {
        $this->CI->load->helper('url');
        if(preg_match("/welcome.*/i",uri_string()))
        {
            //需要进行权限检查的url
            $this->CI->load->library('session');
            if(!$this->CI->session->userdata('username'))
            {
                //用户未登录
                redirect('login');
                return;
            }
        }
    }

最后再附上 钩子的官方文档,写的很清楚。

http://codeigniter.org.cn/user_guide/general/hooks.html

[获取授权]

你可能感兴趣的:(CI(CodeIgniter )钩子的使用)