将PHP数组移植到MySQL架构以进行ACL授权
我正在使用一个PHP类,该类在我的web应用程序上执行ACL。它是基于驱动程序的,实际上它只是使用一个配置数组。我想将这个数组迁移到MySQL模式,为它做一个驱动程序。这是实际的配置数组:将PHP数组移植到MySQL架构以进行ACL授权,mysql,access-control,Mysql,Access Control,我正在使用一个PHP类,该类在我的web应用程序上执行ACL。它是基于驱动程序的,实际上它只是使用一个配置数组。我想将这个数组迁移到MySQL模式,为它做一个驱动程序。这是实际的配置数组: $config = array( /** * Groups as id => array(name => <string>, roles => <array>) */ 'groups' => array( -
$config = array(
/**
* Groups as id => array(name => <string>, roles => <array>)
*/
'groups' => array(
-1 => array('name' => 'Banned', 'roles' => array('banned')),
0 => array('name' => 'Guests', 'roles' => array()),
1 => array('name' => 'Users', 'roles' => array('user')),
50 => array('name' => 'Moderators', 'roles' => array('user', 'moderator')),
100 => array('name' => 'Administrators', 'roles' => array('user', 'moderator', 'admin')),
),
/**
* Roles as name => array(location => rights)
*/
'roles' => array(
'#' => array('website' => array('read')), // default rights
'banned' => false,
'user' => array('comments' => array('create', 'read')),
'moderator' => array('comments' => array('update', 'delete')),
'admin' => array(
'website' => array('create', 'update', 'delete'),
'admin' => array('create', 'read', 'update', 'delete'),
),
'super' => true,
),
);
$config=array(
/**
*组作为id=>array(名称=>,角色=>)
*/
“组”=>数组(
-1=>array('name'=>'banked','roles'=>array('banked'),
0=>array('name'=>'Guests','roles'=>array()),
1=>array('name'=>'Users','roles'=>array('user')),
50=>array('name'=>'版主','roles'=>array('user','moderator')),
100=>array('name'=>'Administrators','roles'=>array('user','mediator','admin')),
),
/**
*角色名称=>数组(位置=>权限)
*/
“角色”=>数组(
“#”=>array('website'=>array('read'),//默认权限
“禁止”=>错误,
'user'=>array('comments'=>array('create','read')),
“主持人”=>array('comments'=>array('update','delete')),
“admin”=>数组(
“网站”=>array('create'、'update'、'delete'),
'admin'=>数组('create'、'read'、'update'、'delete'),
),
“超级”=>正确,
),
);
这就是我一直在想的:
这让我可以将角色与现有组关联起来,因此我首先解决了问题。我不知道如何添加每个角色的位置和权限。显然,它将转到一个与角色id相关的单独的表中,但复制类似内容的最佳方法是什么:array('comments'=>array('update','delete'))
最后一件事,如果一个角色有一个布尔值(比如role-banked或role-super),则表示所有为真或所有为假。这可能更适合角色。没有
提前谢谢你 这个怎么样
roles_has_access
-----
role_id FK
location_id FK
right_id FK
locations
-----
id PK
name
-- ?
-- whatever resources/locations you have here (website, admin, comments)
rights
-----
id PK
name
-- `CREATE`, `UPDATE`, `DELETE`, `READ` etc.
这个怎么样
roles_has_access
-----
role_id FK
location_id FK
right_id FK
locations
-----
id PK
name
-- ?
-- whatever resources/locations you have here (website, admin, comments)
rights
-----
id PK
name
-- `CREATE`, `UPDATE`, `DELETE`, `READ` etc.