Table:UserINFO
Field: UserID,UserName,Password,Email
例如:1,John,5555,
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();//用户离开系统
};
阅读(1228) | 评论(0) | 转发(0) |