2011-11-25 86 views
0

我已經安裝了坦克認證,以節省我創建認證腳本的時間。如何在Codeigniter HMVC中調用模塊功能?坦克認證

由於我使用HMVC,坦克認證有它自己的模塊(modules/auth)。

如何用登錄腳本保護我的其他模塊(/ admin,/ members等)?

從我讀書,我需要做的是這樣的:

modules::run('auth/is_logged_in'); 

我的身份驗證控制器看起來像:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

class Auth extends MX_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 

     $this->load->helper(array('form', 'url')); 
     $this->load->library('form_validation'); 
     //$this->load->library('security'); 
     $this->load->library('tank_auth'); 
     $this->lang->load('tank_auth'); 

    } 

    function index() 
    { 
     if ($message = $this->session->flashdata('message')) { 
      //$this->load->view('auth/auth/general_message', array('message' => $message)); 

      $main_content = 'auth/auth/general_message'; 
      $this->load->view('includes/template', array('message' => $message, 'main_content' =>$main_content)); 
     } else { 
      redirect('auth/login/'); 
     } 
    } 

    /** 
    * Login user on the site 
    * 
    * @return void 
    */ 
    function login() 
    { 
     if ($this->tank_auth->is_logged_in()) {         // logged in 
      redirect('admin'); 

     } elseif ($this->tank_auth->is_logged_in(FALSE)) {      // logged in, not activated 
      redirect('auth/send_again/');........ 

的控制器/模塊我要保護的登錄腳本:

<?php 

if (!defined('BASEPATH')) 
    exit('No direct script access allowed'); 

    class Admin extends MX_Controller { 

     public function __construct(){ 
      parent::__construct(); 



      modules::run('auth/auth/login'); 

     } 

以上似乎不工作?我錯過了什麼?

+0

我認爲你需要檢查的'ELSEIF輸出($這個 - > tank_auth-> is_logged_in(FALSE))'。如果這不算真,你的用戶將不會被重定向(即使登錄檢查也失敗了),並且不會採取任何行動,將用戶留在管理頁面上。 – Olaf

+0

感謝olaf,有沒有一種方法可以測試我嘗試運行的模塊::是否發現它的目標函數? – hairynuggets

回答

4

我把這個代碼放到我的控制器:

function _remap($method) 
{ 
    if (method_exists($this, $method) && $this->tank_auth->is_logged_in()) 
    { 
     $this->$method(); 
    } 
    else 
    { 
     redirect('/auth/login/'); 
    } 
}