所謂管理員的權限其實是一個三表連接:管理員列表(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;
}
