转:用户权限控制

Table:UserINFO
Field:   UserID,UserName,Password,Email
例如:1,John,5555,john@phpchina.com

UserINFO用来存储用户的基本信息。例如登陆用户名,密码等。 用这些信息来验证用户的真实性。

Table:Role
Filed:RoleID,Rolename
Role是用户在系统中的各种角色(或职位)。 比方说送水工,清洁工,工程师,经理。
例如:4,送水工 表明公司内有一个角色是送水工。 我们为这个角色编号为4号。
        5,清洁工 表明公司内有一个角色是送水工。 我们为这个角色编号为5号。


Table:UserHasRoles
Field:  UserID,RoleID
UserHasRoles表是用来关联用户和角色,比方说,John,他既可以是送水的工人,也可以是公司的清洁工。那么我们需要插入两行记录
1,4         表明 John是送水的工人
1,5         表明 John是清洁工

Table:Entrance
Field:EntranceID,EntranceName
这个表用来记录(系统)公司所有的入口,例如
1,大门
8,饮用水库房
9,总经理办公室

Table:RoleCanEnter
Field:RoleID,EntranceID
这个表用来记录角色是否能够进入某个入口。例如:
4,1  表明清洁工可以进入大门
4,8  表明清洁工可以进入饮用水库房


这就是一个基本的RBAC系统。
class user{
      
        //用户登录后存储ID。
        private userID;
      
        //验证密码,登录用户
        public login(user_name,pwd){
         /*
                  .........
         */
         
       }
      
     //用户要进入某个入口
      public  enter($entrance){
              //以下的代码对用户的所有角色遍历,看他的角色是否可以进入指定的$entrance这个入口。
              /*
                ........
              */
      }
      
      // 用户登出系统
      public logout(){
          //.....
      }

}

初始化一个用户对象
$SysUser = new user();

//用户使用名称和密码登录
if($SysUser->login('John','5555')){
     $SysUser->enter('大门');    //用户想要进入大门  ---- 当然可以啦。。。
     $SysUser->enter('总经理办公室');  //用户想要进入总经理办公室', --不可以....
     $SysUser->logout();//用户离开系统
};

上一篇:Linux操作系统(CentOS)之DNS服务器配置与应用


下一篇:学习准备