2

我正在使用 Yii 的权限扩展并收到此错误:

There must be at least one superuser!

我不知道这superuser意味着什么,因为我使用的是用户 admin 和 demo 的默认身份验证。在阅读了权限扩展的文档后,我尝试使用以下方式配置权限:

'rights'=>array(
    'superuserName'=>'admin',
    'install'=>true
),

但它不起作用,我搜索了互联网但没有结果。

4

7 回答 7

7

您需要将用户表与表 AuthAssignment 连接,该表的名称已在数组设置中声明

'modules'=>array(
'rights'=>array(
    'superuserName'=>'admin',
     ),
 ),

然后,您必须更改引用表用户上的字段 id 的表 AuthAssignment userid 字段

于 2012-11-22T08:37:41.103 回答
5

如果您已经安装了像这里这样的用户和权限,只需在您的数据库中运行它:

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;'); 

注意:在教程中权限模块的所有表名都是小写的。

于 2015-04-25T06:58:05.293 回答
2

命名有点误导,我也偶然发现了这个问题。

superuserName应该是命名superuserRole的,这意味着分配给指定角色的所有用户都是超级用户

请注意,这Yii::app()->user->checkAccess('whatever')将始终return true适用于超级用户

另请参阅RAuthorizer.php

/**
* @property string the name of the superuser role.
*/
public $superuserName;

RWebUser.php

于 2012-11-21T15:30:45.093 回答
1

有一个小技巧,你必须注释掉它才能工作......

检查官方扩展页面评论

编辑:我不想发布指向我自己博客的链接,因为它看起来像是在自我推销,但我认为这是解决您的问题的一个非常全面的解决方案:安装 yii-rights 扩展

于 2012-07-03T02:58:31.260 回答
1

FWIW(因为它已经很长时间了),您必须授予您的一位用户超级用户角色。

该角色名称superuserName在配置文件的属性中表示,如您的帖子中所示。这可以通过 SQL 直接通过更新authAssignment表来完成(在您的情况下,它的名称可能不同,它是可配置的)。

INSERT INTO `authassignment` (`itemname`, `userid`, `bizrule`, `data`) VALUES ('admin', '1', NULL, 'N;');

然后,以适当的用户身份登录(在这种特殊情况下,与 id #1 对应的用户)。

于 2012-10-03T19:24:16.500 回答
0

我认为您必须使用 mysql 数据库和表用户而不是默认身份验证-这只是身份验证的示例-。导入用户表后,您应该在用户表中添加一个用户名为“admin”的用户 - 如果你在 superuserName 配置中有“admin”。

于 2011-12-15T06:50:35.343 回答
0

我通过 yii-forums 上的帖子成功安装了它 - 这是我帖子的永久链接: http ://www.yiiframework.com/forum/index.php/topic/10556-extension-rights/page__view__findpost__p__229721

于 2013-11-26T14:52:59.077 回答