gpt4 book ai didi

mysql - 将 PHP 数组移植到 MySQL 模式以获得 ACL 授权

转载 作者:行者123 更新时间:2023-11-29 00:48:51 25 4
gpt4 key购买 nike

我正在使用在我的网络应用程序上执行 ACL 的 PHP 类。它是基于驱动程序的,实际上它只是使用一个配置数组。我想将这个数组迁移到 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,
),

);

这是我一直在想的:

MySQL schema

这让我可以将角色与现有组相关联,这样我就可以解决第一件事。我不知道如何添加的是每个角色的位置和权限。显然,它将转到一个与 role_id 相关的单独表,但是重现类似内容的最佳方法是什么:array('comments' => array('update', 'delete'))

最后一件事,如果一个角色有一个 bool 值(比如角色被禁止或角色 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.

关于mysql - 将 PHP 数组移植到 MySQL 模式以获得 ACL 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9357618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com