19

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');

基本的に私の質問は(そして、これを尋ねるのは非常にばかげていると感じます)が、親の役割の挿入はどのように見えるのですか?また、提示した挿入ステートメントが実際に正しい場合、親ロールを挿入する前に常に外部キーを削除する必要がありますか?

4

2 に答える 2

1

create table を次のように変更します。

CREATE TABLE `rbac_role` (
    `role_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `parent_role_id` int(11) unsigned 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;

parent_role_id が NOT NULL ではなく NULL であることに注意してください。parent_role_id が NOT NULL の場合、それは親を持つ必要があることを意味しますが、外部キー参照は同じテーブルに対するものであるため、親行を挿入する方法はありません!

于 2013-05-25T16:46:20.137 に答える
1

参考: この問題は修正されました。zfc-rbac のバージョン 0.2.0 では、parent_role_id として NULL 値が許可されます

于 2013-06-19T06:04:09.137 に答える