2013-05-09 93 views
0

我已經做了相當多的研究,並沒有找到一個令人滿意的答案。集成CodeIgniter庫(如坦克認證)

我應該如何使用CodeIgniter庫,如坦克認證?我已經找到辦法了一把,但他們似乎都有點黯淡:

  1. 我用控制器大多原樣,根據需要添加控制器功能/包括樣式?
  2. 我是否使用控制器作爲示例來建立自己的模型,依靠調用$ this-> tank_auth和tank auth包含的視圖?
  3. 或者我用tank-auth控制器擴展MY_Controller,然後擴展那些需要認證的特定控制器,並調用parent :: login()(或register(),activate()等)?

第一個選項似乎是最好的,但現在看來似乎是難以避免複製大量的代碼(會發生什麼,如果我想要一個登錄表單,但不想重定向到/ auth /中登錄?)

第二個選項有同樣的問題,但更糟。每次我想使用login_form視圖時,我都需要包含tank auth控制器的登錄函數的邏輯,對嗎?

最後看起來真的很詭異,似乎反MVC給我,但也許我錯了。

回答

1

退房http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

僞代碼(見鏈接 - 真的很好的例子有):

的application/config/config.php文件

$autoload = array('tank_auth'); 

// add this to the bottom of config.php as per the directions in the link 
function __autoload($class) 
{ 
    if(strpos($class, 'CI_') !== 0) 
    { 
     @include_once(APPPATH . 'core/'. $class . EXT); 
    } 
} 

應用/核心/ Private_Controller.php

class Private_Controller extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 

     if(! $this->tank_auth->is_logged_in()){ 
      redirect('auth/login'); 
     } 
    } 
} 

控制器

class PrivateStuff extends Private_Controller { 
    function index() { 
     echo "you are logged in"; 
    } 
} 

-

http://example.com/index.php/privatestuff/ 
>you are logged in 

至於意見,你可以使用與LIB出來的那些,因爲它們,自定義它們,或者創建自己的 - 給你。