Zfc-user和zfc-rbac(
https://github.com/ZF-Commons)的github页面很清楚,实现确实很简单(“如许多教程所述).我还发现了zfc-user和zfc-rbac(/ vendor / zf-commons / zfc- [user / rbac] / data /)都需要的sql方案.
用户进入数据库很容易,因为zfc-user已经为你设置了这个(http://example.com/user).一切都到目前为止.现在我想填充这些角色,但是我不清楚如何正确填写rbac表.缺乏关于这一点的信息让我感到惊讶,因为zfc-rbac组件是Zend Framework的一个受欢迎的模块.
我了解基于角色的访问控制的主体以及许可权和表的链接权限和表链接在一起的表格的清楚,这是角色表不清楚我.我明白你可以有一个具有父角色的角色,但是不清楚如何用父角色填充表,因为有一个外键约束,它表示’parent_role_id’必须是’role_id’.
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');
基本上我的问题是(我觉得非常愚蠢的问这个),但是如何插入一个父角色呢?如果我提交的insert语句实际上是正确的,那么在插入父角色之前,是否总是需要删除外键?
将创建表更改为以下内容:
CREATE TABLE `rbac_role` ( `role_id` int(11) unsigned NOT NULL AUTO_INCREMENT,`parent_role_id` int(11) unsigned NULL,KEY `parent_role_id` (`parent_role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
请注意,parent_role_id为NULL而不是NOT NULL.如果parent_role_id不为NULL,那意味着它必须有一个父级,但是由于外键引用是同一个表,所以无法插入父行!