我正在开发一个使用HMVC模式和CodeIgniter的网站。
如果用户未登录,我有一些永远不可访问的模块。
当用户登录时,会设置会话is_logged_in
现在,我尝试了这段代码,似乎可以正常工作,但我不确定它是否安全。
我把它放在 controllers构造函数:
中if ($this->session->userdata('is_logged_in') == NULL) { exit; }
这是安全的,还是可以绕过它?
答案 0 :(得分:0)
您可以创建核心子类控制器,如MY_Controller
,它具有调用您的安全性的构造函数,然后通过在您想要保护的控制器上扩展它。这将比将其全部放在控制器上更好一个一个,因此代码可用性。至于有关安全性的问题,只需添加一些只有你的系统才能阅读的独特会话就足够了。
答案 1 :(得分:0)
// make helper helper,ex。 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/'); }
}