后端管理系統的權限設置


所謂管理員的權限其實是一個三表連接:管理員列表(admin),角色表(role),權限管理表(auth);

1:大家都知道在建立管理員數據庫表的時候,里面有一個字段是role_id;在添加管理員的時候需要添加角色分類,也就是管理員的角色;

2:那當然少不了角色管理了,數據庫建立表的時候,角色表有三個字段:role_id,role_name,rules;這三個表分別代表的角色的id,角色,角色所附有的權限;

3:第三個表當然是權限管理表,權限表也是三個字段:id,name,title;其實就是將后台管理的列表依次加入,格式為:

4:在權限管理列表里面有權限編輯這一欄目,這里就是我們給每個角色賦予什么權限,將權限添加到角色表里面

5:建立公共控制器(以框架為例),ci框架,在core自定義一個控制器命名為:MY_Controller.php;

6:權限設置:(1):根據管理員名可以查詢出角色role_id;(2):根據role_id可以查詢角色權限;(3):查詢登錄的ID,獲取查看的路徑參數,判斷是否能查詢到,不能查詢到代表沒有權限,查詢到了則代表是有權限的

以CI框架為例的代碼:

//根據管理員名查詢角色role_id:
$username=$this->session->username;
//查詢優化數據庫:
$this->db->select('role_id');
$this->db->where('username',$username);
$query=$this->db->get('ci_admin');
$data=$query->result();
$role_id=$data[0]->role_id;
//根據role_id查詢角權限:
$this->db->select('rules');
$this->db->where('role_id',$role_id);
$query1=$this->db->get('ci_role');
$data1=$query1->result();
$rules=$data1[0]->rules;
$arr=explode(',',$rules);

//查詢登錄權限的ID
$path=$this->uri->segment(1).'/'.$this->uri->segment(2);
$this->db->select('id');
$this->db->where('name',$path);
$query2=$this->db->get('ci_auth');
$data2=$query2->result();
//判斷是否存在權限
if(!empty($data2)){
$id=$data2[0]->id;
//判斷權限是否存在$arr數組里面:
if(!in_array($id,$arr)){
echo "<script>alert('您暫時沒有權限對該項進行操作!')</script>";
echo "<script>history.back()</script>";
exit;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM