2017-12-01 15 views

答えて

1

Codeigniterには、同じことに対する解決策があります。これはフックとして知られています。 これらは、プリコントローラー/ポストコントローラーのような特定のイベントでトリガーされるイベントハンドラーのようなものです。そのような場合は、その文書を参照することができます。

しかし、あなたが必要とすることは、設定ファイルのフックを有効にすることです。

$config['enable_hooks'] = TRUE; 

あなたは、コントローラのメソッドの実行前に実行されるために何かをしたいので、あなたはpre_controllerまたはpost_controller_constructorするフックすることができます。

を参照するために、あなたoforコードのサンプルピース:あなたはここで行う必要がある何

$hook['pre_controller'] = array(
     'class' => 'Security', 
     'function' => 'checkForSecurity', 
     'filename' => 'Security.php', 
     'filepath' => 'hooks' 
); 

- Security.phpフォルダ内(フック) - 今、あなたは、ファイルを作成する必要があります。それでは、メソッドcheckForSecurityでクラスSecurityを定義してください。

あなたのできることは、あなたの許可を得てから、さらにユーザーが通過できるようにすることです。あなたが制限したいコントローラの特定の領域にアクセスする権限を与えられていないユーザーがいる場合は、ユーザーをログインページにリダイレクトするか、ページをスローしてユーザーにエラーを報告することができます。

ハッピーコーディング:)

+0

これを確認します。ご回答有難うございます! –

0

あなたが共通のコントローラ「MY_Controller.php」を作成し、すべてのコントローラでそれを拡張することができます。

  • 設定ファイルの変数は、$ config ['subclass_prefix'] = 'MY_'です。あなたはコアフォルダ


function __autoload($class) 
{ 
    if(strpos($class, 'CI_') !== 0 && file_exists(APPPATH . 'core/'. $class . EXT)) { 
     include_once(APPPATH . 'core/'. $class . EXT); 
    } 
} 
  • から内部のすべてのクラスファイルをロードするために、次のコードを追加する必要があり、configファイルで

  • アプリケーション/コアフォルダに

をMY_Controller.phpを作成します。

MY_Controller.phpに次のコードを入力してください

class MY_Controller 
{ 
    function __construct() { 

     $this->load->library('auth'); 

     $login_check_uris = array(
      'users/profile' // users -> controller name ; profile -> function name 
     ); 
     // check against logged in 
     if (in_array(uri_string(), $login_check_uris)) { 

      if ($this->auth->logged_in() == FALSE) { 

       // check for ajax request 
       if ($this->input->is_ajax_request()) { 

        $return = array('status' => 0, 'msg' => 'Please login to perform this request.'); 
        echo json_encode($return); 
        exit; 

       } else { 

        redirect('users/login'); // login url 
       } 

      } 

     } else if(uri_string() == 'users/login') { 
      // check if already login 
      if ($this->auth->logged_in()) { 
       redirect('users/profile'); // user profile page 
      } 
     } 
    } 
} 
  • $ login_check_urisの中には、ログインと照合する必要のあるすべてのURLを入力する必要があります。
  • その後、すべてのコントローラでMY_Controllerを拡張します。
+0

私はこれを試します、ありがとう! –

関連する問題