2012-06-13 2 views
1
의 메인 컨트롤러

가 어떻게 설정 사용자 전용 페이지에 액세스 할 때 자동으로 실행됩니다 컨트롤러를 할 방법 설정. 이것은 현재 사용자가 로그인했는지 여부를 확인하기위한 것입니다.</p> <p>CodeIgniter의 <a href="https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home" rel="nofollow">https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home</a>에서 내가 HMVC를 사용하고 HMVC CodeIgniter의

<?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; 
    } 
} 

하지만 내가 알고있는 유일한 것은 각 모듈의 각 컨트롤러의 생성자에이 메소드를 호출하는 것입니다 : 사용자가 로그인하면 이미 확인하는 도우미를했습니다. 사용자가 로그인했는지 확인하기 위해 모든 컨트롤러에서 동일한 코드를 반복 할 것입니다. 기본적으로 사용자가 modules 디렉토리의 내용에 액세스하려고 할 때마다이 함수를 호출해야합니다.

답변

1

여기에 _remap()을 사용할 수 있습니다. 이것을 사용하면 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/'); 
    } 
} 
1

하나의 옵션은 주 컨트롤러 클래스 (CI_contorller 내가 추측하는)를 확장하고 해당 컨트롤러의 생성자에서이 도우미 메서드를 호출하는 것입니다. 그런 다음이 새 컨트롤러에서 다른 모든 사용자 관련 컨트롤러를 확장합니다.

관련 문제