我对Yii的AuthManager和用于DB表的模式感到困惑。
AuthItem表中的type字段只能介于0和2之间(Role=2,Task=1,Operation=0)?
你能给我举一个例子,说明我在bizrule和data字段中可以找到的存储在教程中使用的blog中的内容吗?
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;

提前谢谢!

最佳答案

是类型字段必须是those values之一。

0: operation, 1: task, 2: role

bizrule可以是holds an executable PHP code的任何字符串,它returnsfalsetrueends with a semicolon。数据应该是string contains some serialized value(s),您可以通过在bizrule中操作$data变量来使用它们。
userid字段可以是我认为的任何类型,但默认值是varcharimplementationcomesfromhere

关于mysql - Yii AuthManager架构和类​​型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12376687/

10-09 06:47