CodeIgniter只允许在登录时访问某些控制器

时间:2010-01-07 14:04:23

标签: codeigniter authentication controller

我有一些CodeIgniter控制器,只有已登录的用户才能访问(即$ this-> session-> userdata('username')不为null)。如果未经过身份验证的人试图访问所述控制器,他们应该收到:

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

必须有一个更好的方法来做到这一点而不是放一个

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

在控制器中的每个功能前面......

我知道DX_Auth有类似的功能,但我没有使用身份验证插件,我不愿意这样做。

谢谢!
马拉

1 个答案:

答案 0 :(得分:5)

在创建类时进行用户登录检查,因此用户访问它的功能无关紧要,检查会话变量并在失败时重定向到登录页面:

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

这是在创建__constructor时调用controllers/models或在codeigniter中等效的方式,或者至少是我理解的内容!