0

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

如果用户未登录,我有一些模块永远无法访问。

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

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

我把它放在控制器构造函数中:

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

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

4

2 回答 2

0

您可以创建像MY_Controller这样的核心子类控制器,它有一个调用您的安全性的构造函数,然后通过在您想要保护的控制器上扩展它。这比将它一个一个地放在控制器上要好得多,因此代码可重用。至于安全问题,添加一些只有您的系统才能读取的独特会话就足够了。

于 2013-01-25T14:53:40.993 回答
0

// 使助手助手,例如。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/'); }
    }
于 2013-01-25T15:08:40.703 回答