Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP数组移植到MySQL架构以进行ACL授权_Mysql_Access Control - Fatal编程技术网

将PHP数组移植到MySQL架构以进行ACL授权

将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( -

我正在使用一个PHP类,该类在我的web应用程序上执行ACL。它是基于驱动程序的,实际上它只是使用一个配置数组。我想将这个数组迁移到MySQL模式,为它做一个驱动程序。这是实际的配置数组:

$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.