1

我有一个事件控制器:

class Event extends CI_Controller{

   public function index(){
   }

   public function foo(){
   }

   //Shouldn't be able to use this method unless logged in
   public function bar(){
   }


}

而且我正在尝试组织我的代码,使其相当整洁和直接。刚才我有一个名为 MY_Controller 的控制器,因此只有经过身份验证的用户才能访问任何扩展它的控制器的方法(edit_event()、add_event())。

但是,我的控制器中的某些方法需要未经身份验证的用户才能访问(例如 get_event())。

什么是处理这个的好方法?我应该制作两个完全独立的控制器还是从基本事件控制器扩展并添加经过身份验证的方法?

以前我有一个管理控制器来处理所有需要身份验证的方法,例如 add_user、delete_user、add_doc、delete_doc。但是它很快就被弄脏了,并且不容易更新或修改控制器(而且它很乱,似乎没有遵循良好的编程礼仪)。

4

1 回答 1

0

通常我使用钩子

阅读有关它们的信息。

例如,我创建了一个 url_hook.php,它控制每次页面加载是否允许用户使用 uri:

class url_hook{

function allowed_urls(){

$allow = array('login','logout','search');

if(in_array($allow,$this->uri->segment(2)) && $this->session->userdata('user_id')){

 //ok user allowed

return true;

}else{

//user not allowed

 redirect();

} } }

然后在config/config.php我做:

$config['enable_hooks'] = TRUE;

config/hooks.php这样的事情中:

 $hook['pre_controller'][] = array(
                                'class'    => 'url_hook',
                                'function' => 'allowed_urls',
                                'filename' => 'url_hook.php',
                                'filepath' => 'hooks'

                                );

每次在您的应用中调用 url 时,所有这些都会自动运行

于 2013-03-26T17:01:18.940 回答