1

CodeIgniter で HMVC を使用しています https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home

ユーザー専用ページにアクセスしたときに自動的に実行されるコントローラーをセットアップするにはどうすればよいですか。これは、ユーザーが現在ログインしているかどうかを確認するためのものです。ユーザーがログインしているかどうかを確認するヘルパーを既に作成しました。

<?php 
if(!defined('BASEPATH')) exit('No direct script access allowed');
if (!function_exists('is_logged_in')){
    function is_logged_in(){
        $CI =& get_instance();
        $logged_in = FALSE;
        $user_data = $CI->session->userdata('logged_in');
        if(!empty($user_data)){
            $logged_in = TRUE;
        }
        return $logged_in;
    }   
}

しかし、私が知っている唯一のことは、各モジュールの各コントローラーのコンストラクターでこのメソッドを呼び出すことです。ユーザーがログインしているかどうかを確認するためだけに、すべてのコントローラーで同じコードを繰り返します。基本的に、ユーザーがモジュールディレクトリ内の何かにアクセスしようとするたびに、この関数を呼び出す必要があります。

4

2 に答える 2

1

1つのオプションは、メインコントローラークラス(CI_contorllerだと思います)を拡張し、そのコントローラーのコンストラクターでこのヘルパーメソッドを呼び出すことです。次に、この新しいコントローラーから他のすべてのユーザー関連コントローラーを拡張します。

于 2012-06-13T08:24:42.017 に答える
1

これには _remap() を使用できます。MY_Controller を使用している場合は、これを MY_Controller に入れることができます。詳細については、Controller User Guideを参照してください。

ここから始められることがあります。

function _remap($method)
{
    if (method_exists($this, $method) && $this-my_custom_helper->is_logged_in())
    {
        $this->$method();
    }
    else
    {
        redirect('/auth/login/');
    }
}
于 2012-06-13T08:49:17.373 に答える