美文网首页CodeIgniterPHP技术交流
CI(CodeIgniter )钩子的使用

CI(CodeIgniter )钩子的使用

作者: IT锟 | 来源:发表于2017-08-06 22:01 被阅读556次

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

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

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

    使用的方法记录下:

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

    设置为TRUE

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

    $hook['post_controller_constructor'][] = array(
        'class' => 'ManageAuth',            //类名
        'function' => 'auth',               //执行的方法
        'filename' => 'ManageAuth.php',     //文件名
        'filepath' => 'hooks'              //文件路径,默认是application/hooks
    );
    

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

    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 )钩子的使用

      本文链接:https://www.haomeiwen.com/subject/jlzglxtx.html