我有一些 CodeIgniter Controller 只能由登录的用户访问(即 $this->session->userdata('username') 不为空)。如果未经身份验证的人试图访问所述 Controller ,他们应该收到:
header('location: /auth/login');
必须有比放置一个更好的方法来做到这一点
if (!$this->session->userdata('username'))
header('location: /auth/login');
else
{
[rest of function]
}
在 Controller 中的每个功能前面...
我知道 DX_Auth 具有类似的功能,但我没有使用身份验证插件,我也不愿意这样做。
谢谢!
马拉
最佳答案
在创建类时进行用户登录检查,因此无论用户访问什么功能,它都会检查 session 变量并在失败时重定向到登录页面:
function className()
{
parent::Controller();
if(!$this->session->userdata('username')) header('location: /auth/login');
}
这就是调用
__constructor
的方式。或者在您创建 controllers/models
时在 codeigniter 中等效,或者至少我是这么理解的!
关于CodeIgniter 仅允许在登录时访问某些 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020815/