有许多关于如何在 Zend Framework 2 中实现 zfc-user 和 zfc-rbac 的“入门”教程。zfc-user 和 zfc-rbac 的 github 页面 ( https://github.com/ZF-Commons )很清楚,实现确实很容易(如许多教程中所述)。我还找到了 zfc-user 和 zfc-rbac (/vendor/zf-commons/zfc-[user/rbac]/data/) 所需的 SQL 方案。
在数据库中创建用户很容易,因为 zfc-user 已经为您设置好了(http://example.com/user)。到目前为止一切都很好。现在我想填充角色,但我不清楚如何正确填充 rbac 表。缺少这方面的信息让我感到惊讶,因为 zfc-rbac 组件是 Zend 框架的一个流行模块。
我了解基于角色的访问控制的原理,并且权限表的填充以及将权限和角色链接在一起的表很清楚,我不清楚的是角色表。我知道您可以拥有一个具有父角色的角色,但不清楚如何使用父角色填充表,因为有一个外键约束指出“parent_role_id”必须是“role_id”。
下面是角色表的 SQL(这是 zfc-rbac 提供的 SQL):
CREATE TABLE `rbac_role` (
`role_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`parent_role_id` int(11) unsigned NOT NULL,
`role_name` varchar(32) NULL,
PRIMARY KEY (`role_id`),
KEY `parent_role_id` (`parent_role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `rbac_role`
ADD CONSTRAINT `rbac_role_ibfk_1` FOREIGN KEY (`parent_role_id`) REFERENCES `rbac_role` (`role_id`);
使用外键添加父角色似乎是不可能的?
INSERT INTO `rbac_role` (parent_role_id, role_name) VALUES (NULL, 'admin');
基本上我的问题是(我觉得问这个很愚蠢)但是插入父角色的样子如何?如果我提出的插入语句实际上是正确的,我是否总是需要在插入父角色之前删除外键?