我对Yii的AuthManager以及用于数据库表的架构感到困惑。
这个架构(对于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;
感谢提前!
答案 0 :(得分:0)
是类型字段必须是those values之一。
0: operation, 1: task, 2: role
bizrule 可以是holds an executable PHP code return
false
或true
和ends with a semicolon string contains some serialized value(s)的任何字符串。 数据应为comes,您可以在 bizrule 中操作$data
变量来使用它们。
userid 字段可以是我认为的任何类型,但here的默认varchar
实施{{3}}。
答案 1 :(得分:0)
您只有三种不同类型的身份验证项;角色,任务和操作。现实情况是,它们可以被视为几乎相同,并且区别在于设计而非实施。 biz规则用于确定用户是否具有访问权限,或者换句话说是对权限的粒度。例如,用户可能有权创建用户,但只有基本用户,而不是管理员。这是bizrules可以给你的那种粒度。花时间设计角色和访问权限,auth实现将非常简单。 youtube上的这个播放列表提供了一个更好的例子。
http://www.youtube.com/watch?v=7fGUtvwofU8&list=PLdfhvjWV26rQBM9gUAPG1BnTrDGsReQSr