保护未登录用户的HMVC模块

时间:2013-01-25 14:36:35

标签: php security codeigniter authentication hmvc

我正在开发一个使用HMVC模式和CodeIgniter的网站。

如果用户未登录,我有一些永远不可访问的模块。

当用户登录时,会设置会话is_logged_in

现在,我尝试了这段代码,似乎可以正常工作,但我不确定它是否安全。

我把它放在 controllers构造函数

if ($this->session->userdata('is_logged_in') == NULL) { exit; }

这是安全的,还是可以绕过它?

2 个答案:

答案 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/'); }
    }