ログイン関数を作成して、すべてのコントローラーで関数を呼び出さなくても、ページが読み込まれるたびに自動的に実行されるようにする方法について説明しているサイトをいくつか見てきました。私が見たいくつかへのリンク。
私はこれを達成する方法について話しているこのウェブサイトを見つけました:
philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY
CI_Controllerを拡張するMY_Controllerと、Webサイトのメインサイトを制御するMY_Controllerを拡張するFrontend_Controllerを作成しました。また、作成しているCMSを制御するBackend_Controllerもあります。
Backend_Controllerを拡張するログインコントローラーもあります。私が持っている質問は、バックエンド領域全体に対してifステートメントを実行して、セッション変数が設定されているかどうかを確認し、存在する場合は値が数値であるかどうかを確認する場合はどうなるかということです。次に、ログインにリダイレクトするようにし、そうでない場合は、Backend_Controllerも拡張するコントロールパネルコントローラーにリダイレクトします。Backend_Controller内のifステートメントを実行しますか?
これがIIが考えたものです。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Backend_Controller extends MY_Controller
{
public function __construct()
{
parent::__construct();
if (!!isset($this->session->userdata('xtr'))) && (!is_integer($this->session->userdata('user_variable_id'))))
{
redirect('login');
}
}
}
これを達成するためのこれは正しい方法であり、そうするための適切な場所ですか?もしそうなら、ユーザーを管理するためのログインコントローラーまたは他のコントローラーに固有のことをしますか?
または、これを使用するためのより良いアイデアはありますか?