我目前正在使用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