Yii AuthManager架构和类​​型

时间:2012-09-11 19:34:51

标签: mysql rbac yii

我对Yii的AuthManager以及用于数据库表的架构感到困惑。

  1. AuthItem 表中的类型字段只能介于0和2之间(Role = 2,Task = 1,Operation = 0)?
  2. 您能否使用本教程中使用的博客向我举例说明我在 bizrule 数据字段中找到的内容?
  3. userid 字段必须是varchar?
  4. 这个架构(对于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;
    

    感谢提前!

2 个答案:

答案 0 :(得分:0)

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

    0: operation, 1: task, 2: role
    
  2. bizrule 可以是holds an executable PHP code return falsetrueends with a semicolon string contains some serialized value(s)的任何字符串。 数据应为comes,您可以在 bizrule 中操作$data变量来使用它们。

  3. userid 字段可以是我认为的任何类型,但here的默认varchar实施{{3}}。

答案 1 :(得分:0)

您只有三种不同类型的身份验证项;角色,任务和操作。现实情况是,它们可以被视为几乎相同,并且区别在于设计而非实施。 biz规则用于确定用户是否具有访问权限,或者换句话说是对权限的粒度。例如,用户可能有权创建用户,但只有基本用户,而不是管理员。这是bizrules可以给你的那种粒度。花时间设计角色和访问权限,auth实现将非常简单。 youtube上的这个播放列表提供了一个更好的例子。

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