2010-07-19 73 views
4

我正在使用CodeIgniter框架爲PHP。有些頁面專門用於管理員,他們位於Admin/*。當用戶登錄時,我在會話中存儲一些值作爲標誌,並在我的控制器中驗證它以測試用戶是否登錄。我編寫了代碼來檢查我的控制器中每個方法的會話。但是,後來我意識到我不想在每種方法中編寫相同的代碼行,因爲許多問題都是從可維護性角度創建的。然後我決定創建一個獨佔控制器,它將只加載管理視圖,因此在它的構造函數中檢查會話值。除了這種方法還有其他方法嗎?我做對了嗎?或者CodeIgniter有任何其他安全機制?如何驗證用戶是否已登錄?

回答

4

你已經採取了最好的方法之一(我的意見),只是讓其他管理員控制器擴展從該控制器,所以你可以有專門的控制器(管理博客,管理圖片庫等)。如果你需要幫助,我會很樂意幫助你。

+0

太好了!謝謝:) – TCM 2010-07-19 13:27:35

+0

嘿Flakron,我感謝更多的幫助/建議。具體來說就是如何首先設置控制器。然後如何讓其他控制器擴展它,同時擴展CI_controller。 – David 2012-05-06 14:55:24

1

你能做到這一點在你的構造函數方法是這樣的,

function __construct { 
    parent::construct(); 
    /* Do you login check here */ 
} 
1

例如:

class Admin extends Controller { 

function __construct() 
{ 
    parent::__construct(); 
    $this->is_logged_in(); 
} 

function is_logged_in() 
{ 

    $is_logged_in = $this->session->userdata('is_logged_in'); 
    if(!isset($is_logged_in) || $is_logged_in != true) 
    { 
    redirect('login'); 
    } 
}