如果有人用过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
[获取授权]