2

こんにちは私はpost_controllerフックを使用して、ログインしているかどうかをユーザーに検証していますが、検証に失敗すると、ユーザーをログインコントローラーにリダイレクトします....問題は、デフォルトのコントローラーにリダイレクトするときにpost_controllerフックが再度呼び出され、このようにして無限ループが開始することです。繰り返しリダイレクトします。ログインコントローラーを除くすべてのコントローラーに対してpost_controllerフックを呼び出したい...ユーザーがログインしている場合はセッションライブラリもpostコントローラーにロードするため、セッションライブラリを何度もロードする必要がない方法もあります設定ファイルの自動ロードを介して...これが私のコードです


    //Hooks
    $hook['post_controller'] = array(
                                'class'    => 'is_login',
                                'function' => 'index',
                                'filename' => 'is_login.php',
                                'filepath' => 'hooks'
                                ); 

//Is_Login Hook class is_login { function __construct(){ $this->CI =& get_instance(); if(!isset($this->CI->session)) //Check if session lib is loaded or not $this->CI->load->library('session'); //If not loaded, then load it here } public function index() { $login_id = $this->CI->session->userdata('login_id'); $login_flag = $this->CI->session->userdata('logged_in'); if ($login_flag != TRUE || $login_id == "") { redirect(site_url().'/welcome_login', 'refresh'); } } }
4

3 に答える 3

4

Codeigniterフックを使用するのは適切な場所ではないようです。アプリケーションでControllerクラスを拡張し、コンストラクターでユーザーがログインしているかどうかを確認し、ログインコントローラーにリダイレクトできると便利です。ただし、ログインコントローラをコントローラから拡張する必要はなく、代わりにCI_Controllerから拡張します。

于 2012-07-10T07:27:20.300 に答える
1

私は問題なくフックによってログインを検証します。ログアウト時にログインビューとexitアプリケーションを生成するだけなので、表示されるのはログインだけで、コントローラー(および残り)は無視されます。

本当にリダイレクトの必要はありません。

于 2012-07-10T08:53:39.760 に答える
0
if ($this->CI->uri->segment(1) != 'auth') {

    //Authenticate
    if (empty($user->user_id))redirect('auth');

}
于 2013-12-23T02:01:04.680 に答える