我正在使用 HMVC 模式和 CodeIgniter 开发一个网站。
如果用户未登录,我有一些模块永远无法访问。
当用户登录时,它会设置一个会话is_logged_in
现在,我尝试了这段代码,它似乎可以正常工作,但是我不确定它是否安全。
我把它放在控制器构造函数中:
if ($this->session->userdata('is_logged_in') == NULL) { exit; }
这是安全的,还是可以绕过?
我正在使用 HMVC 模式和 CodeIgniter 开发一个网站。
如果用户未登录,我有一些模块永远无法访问。
当用户登录时,它会设置一个会话is_logged_in
现在,我尝试了这段代码,它似乎可以正常工作,但是我不确定它是否安全。
我把它放在控制器构造函数中:
if ($this->session->userdata('is_logged_in') == NULL) { exit; }
这是安全的,还是可以绕过?
您可以创建像MY_Controller
这样的核心子类控制器,它有一个调用您的安全性的构造函数,然后通过在您想要保护的控制器上扩展它。这比将它一个一个地放在控制器上要好得多,因此代码可重用。至于安全问题,添加一些只有您的系统才能读取的独特会话就足够了。
// 使助手助手,例如。my_login_helper
if (!function_exists('is_logged_in')){
function is_logged_in(){
// Get current CI instance
$CI =& get_instance();
// use $CI->session instead of $this->session
$user = $CI->session->userdata('is_logged_in');
if (!isset($user)) { return false; } else { return true; }
}
}
// 在每个控制器上重复相同的代码只是为了检查用户是否登录 // make My_Controller
function _remap($method)
{
if (method_exists($this, $method) && $this->my_login_helper->is_logged_in())
{ $this->$method(); }
else { redirect('/auth/'); }
}