2010-01-07 110 views
4

我有一些CodeIgniter控制器只能由已登錄的用戶訪問(即$ this-> session-> userdata('username')不爲空)。如果無認證的人試圖訪問所述控制器他們應該得到:CodeIgniter只允許在登錄時訪問某些控制器

header('location: /auth/login'); 

有一定是更好的方法來做到這一點,而不是把

if (!$this->session->userdata('username')) 
    header('location: /auth/login'); 
else 
{ 
    [rest of function] 
} 

在每一個功能的前控制器...

我知道DX_Auth有一個類似的功能,但我沒有使用身份驗證插件,我沒有打開這樣做。

謝謝!
麻辣

回答

5

執行用戶登錄檢查創建類的時候,所以也無所謂什麼功能的用戶訪問它將檢查會話變量和重定向到登錄頁面上的失敗:

function className() 
{ 
    parent::Controller(); 
    if(!$this->session->userdata('username')) header('location: /auth/login'); 
} 

這就是調用__constructor的方式,或者當您創建controllers/models或者至少這就是我的理解時,它在codeigniter中是等效的!

+0

啊歡呼隊友:)我沒有想過實例化這些東西! – Mala 2010-01-07 14:23:52

+0

它工作嗎?不能在這裏嘗試:P – johnnyArt 2010-01-07 14:27:13

+0

是的,它是一種魅力,非常感謝!對於只有特定功能被「限制」的控制器,是否也有將它放入構造函數的方法?或者對於那些我需要在功能前面添加一個if/header塊? – Mala 2010-01-07 14:34:24