OOP/MVC 中的会话安全

jer*_*emy 1 php security oop model-view-controller codeigniter

这个问题具体是关于如何在基于函数/OOP/MVC 的环境中正确实现会话安全性。

我熟悉程序文件中的会话安全性 - 如果我有一个按程序编写的 control_panel.php 文件,我可以简单地在页面顶部检查会话安全性,或者只要逻辑指示它将首先加载。

但是,我是 OOP/MVC 的新手,我的页面现在只是一堆函数!

希望我不需要在每个函数中检查会话安全性..?

请注意,我使用的是 CodeIgniter2。

这是我的代码示例:

<?php

class Main_controller extends CI_Controller {

public function __construct() {
        parent::__construct(); 
}

public function index() {
   //$this->load->view(my_view);
   //run some code
}

public function function1() {
   //$this->load->model(my_model);
   // run some code
}

private function function2() {
   //$this->load->view(my_view2);
   //run some code
}
?>
Run Code Online (Sandbox Code Playgroud)

在程序化的 php 页面中,它看起来像这样:

<?php

// check user login
if (isset($_SESSION["user"]) && !empty($_SESSION["user"])) {

// all of the code on the page

}
?>
Run Code Online (Sandbox Code Playgroud)

Lau*_*nce 5

将基本控制器扩展为MY_Controller- 并将支票放在那里。

class MY_Controller extends CI_Controller
{
    public function __construct() 
    {
        parent::__construct();

        if ( ! isset($_SESSION["user"]) OR (empty($_SESSION["user"]))
        {
            // User not logged in - so send them to the home page
            redirect ("/");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后MY_Controller为您想要“安全”的每个控制器扩展,除非他们登录,否则用户将无法访问它们中的任何一个

class Main_controller extends MY_Controller
{
    public function __construct() 
    {
        parent::__construct(); 
    }

    public function index()
    {
        //$this->load->view(my_view);
        //run some code
    }

    public function function1()
    {
        //$this->load->model(my_model);
        // run some code
    }
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见此处:http : //codeigniter.com/user_guide/general/core_classes.html