CI(CodeIgniter )钩子的使用

如果有人用过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

[获取授权]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容