后端管理系统的权限设置

所谓管理员的权限其实是一个三表连接:管理员列表(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;
}

 

posted @ 2017-04-14 10:38  七秒钟的记忆qing  阅读(2443)  评论(0编辑  收藏  举报