我目前正在使用Kohana作爲我的框架編寫幾個MVC網站。每個管理員都有一個管理員可以上傳和編輯內容的簡單管理區域。我目前存儲管理員的用戶模型中的會話,並檢查它們是否是用以下方法管理員:PHP 5 - 保護網站的管理區域
private function checkAdmin()
{
if (!isset($_SESSION['admin']) || $_SESSION['admin']->Level !== 'admin')
{
header('Location: /admin');
exit;
}
}
我把這種方法在所有其他管理控制器方法,就像這樣:
public function writeReview()
{
$this->checkAdmin();
// rest of the method
}
我只是想知道是否有什麼我可以做,以改善這一點。這看起來像是一個單一的失敗點,給我一個難聞的氣味,所以我有點疲倦,繼續下去之前繼續前進。
我現在擁有它的方式,所有的管理功能都在它自己的控制器中。它的索引()只是一個登錄表單。成功登錄設置會話變量。如果登錄失敗,或者有人試圖訪問任何控制器的公共方法,我只想將它們重定向。我認爲改變網站的家庭控制器的目的地會更好。我只是試圖儘可能地隔離管理部分。 – 2010-07-25 22:26:46
['die() - 這個語言結構等同於exit().'](http://php.net/manual/en/function.die.php) – deceze 2010-07-26 03:27:49