2

YiiのAuthManager全般と、DBテーブルに使用されるスキーマについて混乱しています。

  1. AuthItemテーブルのタイプフィールドは0から2の間でのみ可能です(Role = 2、Task = 1、Operation = 0)?
  2. チュートリアルで使用されているブログを使用して、 bizruleフィールドとdataフィールドに保存されているものの例を教えてください。
  3. useridフィールドはvarcharである必要がありますか?

このスキーマ(MySQLの場合)は競合を生成しますか?

CREATE TABLE `AuthItem` (
  `name` varchar(60) NOT NULL,
  `type` tinyint(1) unsigned NOT NULL,
  `description` varchar(255),
  `bizrule` text,
  `data` text,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `AuthItemChild` (
  `parent` varchar(60) NOT NULL,
  `child` varchar(60) NOT NULL,
  PRIMARY KEY (`parent`,`child`),
  FOREIGN KEY (`parent`) REFERENCES `AuthItem` (`name`)
    ON DELETE CASCADE 
    ON UPDATE CASCADE,
  FOREIGN KEY (`child`) REFERENCES `AuthItem` (`name`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `AuthAssignment` (
  `itemname` varchar(60) NOT NULL,
  `userid` int(10) unsigned NOT NULL,
  `bizrule` text,
  `data` text,
  PRIMARY KEY (`itemname`,`userid`),
  FOREIGN KEY (`itemname`) REFERENCES `AuthItem` (`name`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  FOREIGN KEY (`userid`) REFERENCES `User` (`userid`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

前もって感謝します!

4

2 に答える 2

0
  1. はい、タイプフィールドはこれらの値の1つである必要があります。

    0: operation, 1: task, 2: role
    
  2. bizruleは、セミコロンで終わる実行可能PHPコードを保持する任意の文字列にすることができreturnます。また、データはシリアル化された値を含む文字列である必要があります。これらは、 bizruleの変数を操作することで使用できます。falsetrue$data

  3. useridフィールドは私が思うどのタイプでもかまいませんが、デフォルトのvarchar実装はここからています。

于 2012-09-11T20:14:21.977 に答える
0

認証項目には3つの異なるタイプしかありません。役割、タスク、および操作。現実には、それらは実質的に同じように扱うことができ、その違いは実装よりも設計にあります。bizルールは、ユーザーがアクセス権を持っているかどうか、つまりアクセス許可の粒度を決定するために使用されます。たとえば、ユーザーはユーザーを作成する権限を持っているが、管理者ではなく基本ユーザーのみを持っている場合があります。これは、bizrulesが提供できる粒度のようなものです。ロールとアクセスの設計に時間を費やすと、認証の実装は非常に簡単になります。YouTubeのこの再生リストは、より良い例を示しています。

http://www.youtube.com/watch?v=7fGUtvwofU8&list=PLdfhvjWV26rQBM9gUAPG1BnTrDGsReQSr

于 2013-09-29T22:21:30.103 に答える