2011-12-14 25 views
2

我使用Yii的權限擴展和得到這個錯誤:超級用戶在Yii的權限擴展中意味着什麼?

There must be at least one superuser! 

我不知道這是什麼意思superuser因爲我使用與用戶管理和演示默認的認證。在閱讀權限擴展的文檔後,我試圖配置權限:

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

但它不起作用,我搜索了互聯網但沒有結果。

回答

7

需要用戶表與表AuthAssignment,其名稱的陣列設置

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

然後,你必須改變引用id字段上表的表AuthAssignment用戶ID字段中已申報連接用戶

0

我認爲你必須使用mysql數據庫和表用戶不默認身份驗證 - 這只是一個身份驗證的例子。在導入用戶表 後,您應該添加一個用戶名爲「admin」的用戶 - 如果您在超級用戶名config-在用戶表中具有「admin」。

1

有一個小黑客,行,你必須註釋掉它的工作...

檢查官方擴展頁面評論

編輯:我沒有要發佈一個鏈接到我自己的博客因爲它看起來像自我推銷,但它是一個非常全面的解決方案,您的問題,我認爲:installing yii-rights extension

1

FWIW(因爲它已經這麼長),你必須給予用戶的一個超級用戶角色。

角色名稱在配置文件中的superuserName屬性中表示,如您的文章所示。 這可以通過SQL直接完成,通過更新authAssignment表(它的名字可能與你的情況不同,它是可配置的)。

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

然後,以適當的用戶(對應於id#1,在這種情況下)登錄。

2

命名有點誤導,我也偶然發現了這個問題。

superuserName應命名爲superuserRole,這意味着其分配給角色的所有用戶指定的有超級用戶

請注意,Yii::app()->user->checkAccess('whatever')將始終return true超級用戶

RAuthorizer.php參見:

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

RWebUser.php

4

如果您已經安裝了用戶和權限就像here, 就在你的數據庫運行此:

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

注:在教程權利模塊的所有表名是小寫。

+0

爲我工作。謝謝。 – Pupil 2015-05-05 06:26:55