ThinkPHP3.2.3中Controller的繼承


在用ThinkPHP寫後臺管理模塊的用戶登陸權限的控制時,如何防止其他用戶直接訪問後臺首頁,需要對管理員是否登陸要進行驗證。因爲後臺的頁面不止一個頁面,所以,如果針對每一個頁面都做權限管理的話會很麻煩。

在TP裏,可以通過實現一個公共的控制器,讓後臺的控制器直接繼承這個公共控制器即可,在訪問後臺首頁時,會先訪問這個公共的控制器,只要在這個公共的控制器中,做好管理員驗證的事情即可。


公共的控制器類放在Application\\Common\\Controller目錄下,命名爲CommonController.class.php,命名空間如下:

代碼如下:

<?php

namespace Common\Controller;
use Think\Controller;

class CommonController extends Controller {
    public function _initialize(){
        
        //判斷session裏是否有值
        if(!session('?username')){
            redirect('/admin.php/login/login',2,'請先登陸');
        }
    }

}

子類繼承時:這裏用的時Admin模塊

<?php

namespace Admin\Controller;
use Common\Controller\CommonController;

class IndexController extends CommonController {

    //後臺首頁模板顯示
    public function index(){

        $this->display();
    }
}


清空session:

    public function logout(){
        //清除session
        $_SESSION = array();
        session(null);
        session('[destroy]');
        redirect('/admin.php/login/login',2,'退出成功,返回首頁');
        exit;
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章