2

您好,我正在使用 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 回答