2010-01-07 93 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

相关问题