我正在使用 Yii 的权限扩展并收到此错误:
There must be at least one superuser!
我不知道这superuser
意味着什么,因为我使用的是用户 admin 和 demo 的默认身份验证。在阅读了权限扩展的文档后,我尝试使用以下方式配置权限:
'rights'=>array(
'superuserName'=>'admin',
'install'=>true
),
但它不起作用,我搜索了互联网但没有结果。
我正在使用 Yii 的权限扩展并收到此错误:
There must be at least one superuser!
我不知道这superuser
意味着什么,因为我使用的是用户 admin 和 demo 的默认身份验证。在阅读了权限扩展的文档后,我尝试使用以下方式配置权限:
'rights'=>array(
'superuserName'=>'admin',
'install'=>true
),
但它不起作用,我搜索了互联网但没有结果。
您需要将用户表与表 AuthAssignment 连接,该表的名称已在数组设置中声明
'modules'=>array(
'rights'=>array(
'superuserName'=>'admin',
),
),
然后,您必须更改引用表用户上的字段 id 的表 AuthAssignment userid 字段
如果您已经安装了像这里这样的用户和权限,只需在您的数据库中运行它:
INSERT INTO `AuthAssignment` (`itemname`, `userid`, `bizrule`, `data`) VALUES ('Admin', '1', NULL, 'N');
INSERT INTO `AuthItem` (`name`, `type`, `description`, `bizrule`, `data`) VALUES ('Admin', 0, 'Admin', NULL, 'N;');
注意:在教程中权限模块的所有表名都是小写的。
命名有点误导,我也偶然发现了这个问题。
superuserName
应该是命名superuserRole
的,这意味着分配给指定角色的所有用户都是超级用户。
请注意,这Yii::app()->user->checkAccess('whatever')
将始终return true
适用于超级用户。
另请参阅RAuthorizer.php:
/**
* @property string the name of the superuser role.
*/
public $superuserName;
有一个小技巧,你必须注释掉它才能工作......
检查官方扩展页面评论
编辑:我不想发布指向我自己博客的链接,因为它看起来像是在自我推销,但我认为这是解决您的问题的一个非常全面的解决方案:安装 yii-rights 扩展
FWIW(因为它已经很长时间了),您必须授予您的一位用户超级用户角色。
该角色名称superuserName
在配置文件的属性中表示,如您的帖子中所示。这可以通过 SQL 直接通过更新authAssignment
表来完成(在您的情况下,它的名称可能不同,它是可配置的)。
INSERT INTO `authassignment` (`itemname`, `userid`, `bizrule`, `data`) VALUES ('admin', '1', NULL, 'N;');
然后,以适当的用户身份登录(在这种特殊情况下,与 id #1 对应的用户)。
我认为您必须使用 mysql 数据库和表用户而不是默认身份验证-这只是身份验证的示例-。导入用户表后,您应该在用户表中添加一个用户名为“admin”的用户 - 如果你在 superuserName 配置中有“admin”。
我通过 yii-forums 上的帖子成功安装了它 - 这是我帖子的永久链接: http ://www.yiiframework.com/forum/index.php/topic/10556-extension-rights/page__view__findpost__p__229721