zfc-user と zfc-rbac を Zend Framework 2 に実装する方法については、多数の「入門」チュートリアルがあります。 zfc-user と zfc-rbac の github ページ ( https://github.com/ZF-Commons )明確であり、実装は非常に簡単です (多くのチュートリアルで述べられているように)。また、zfc-user と zfc-rbac の両方に必要な SQL スキームも見つけました (/vendor/zf-commons/zfc-[user/rbac]/data/)。
zfc-user がすでにこれを設定しているので ( http://example.com/user )、データベースへのユーザーの作成は簡単です。これまでのところすべて順調です。ロールを設定したいのですが、rbac テーブルを正しく設定する方法がわかりません。zfc-rbac コンポーネントは Zend Framework の一般的なモジュールであるため、これに関する情報が不足していることに驚きました。
役割ベースのアクセス制御の原則と、アクセス許可のテーブルの作成、およびアクセス許可と役割をリンクするテーブルが明確であることを理解しています。明確でないのは役割テーブルです。親ロールを持つロールを持つことができることは理解していますが、「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');
基本的に私の質問は(そして、これを尋ねるのは非常にばかげていると感じます)が、親の役割の挿入はどのように見えるのですか?また、提示した挿入ステートメントが実際に正しい場合、親ロールを挿入する前に常に外部キーを削除する必要がありますか?