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(){
   }


}

また、コードを整理して、かなり整然とした簡単なものにしようとしています。ちょうど今、認証されたユーザーだけがそれを拡張するコントローラーのメソッド (edit_event()、add_event()) にアクセスできるように、MY_Controller という名前のコントローラーがあります。

ただし、コントローラーの一部のメソッドには、認証されていないユーザー (get_event() など) がアクセスする必要があります。

これを処理する良い方法は何ですか?2 つの完全に別個のコントローラーを作成するか、基本的なイベント コントローラーから拡張して認証済みメソッドを追加する必要がありますか?

以前は、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 に答える