codeigniter
でWebアプリケーションを開発しており、route
を呼び出す前に承認を確認する必要があります。controller
を呼び出してください。私はその文書に関連するものは見つけられませんでした。Codeigniter:ルート上のコントローラにリダイレクトする前に承認を確認してください
誰かにアイデアはありますか?
codeigniter
でWebアプリケーションを開発しており、route
を呼び出す前に承認を確認する必要があります。controller
を呼び出してください。私はその文書に関連するものは見つけられませんでした。Codeigniter:ルート上のコントローラにリダイレクトする前に承認を確認してください
誰かにアイデアはありますか?
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を定義してください。
あなたのできることは、あなたの許可を得てから、さらにユーザーが通過できるようにすることです。あなたが制限したいコントローラの特定の領域にアクセスする権限を与えられていないユーザーがいる場合は、ユーザーをログインページにリダイレクトするか、ページをスローしてユーザーにエラーを報告することができます。
ハッピーコーディング:)
あなたが共通のコントローラ「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);
}
}
アプリケーション/コアフォルダに
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
}
}
}
}
私はこれを試します、ありがとう! –
これを確認します。ご回答有難うございます! –