天天看點

YII中一步一步的配置SRBAC

YII中一步一步的配置SRBAC

  (2011-10-26 12:52:21)

YII中一步一步的配置SRBAC

轉載▼

标簽: 

雜談

分類: yii

下載下傳 srbac

Srbac 可以在如下位址下載下傳:

Yii 擴充頁面: http://www.yiiframework.com/extension/srbac/

Google 項目頁面: http://code.google.com/p/srbac/downloads/list

也可以使用如下指令簽出最新的開發代碼:

svn checkout http://srbac.googlecode.com/svn/trunk/ srbac-read-only

安裝 srbac

要安裝 srbac 子產品,首先解壓壓縮檔案到Yii應用的子產品目錄,如果把srbac作為一個子產品的話,就要在protected檔案夾下建立一個檔案夾modules,然後把解壓得到的檔案夾複制過來。

然後編輯配置檔案如下:

在protected/config/main中

首先應該有db的配置:

'db'=>array(

    'connectionString' => 'mysql:host=localhost;dbname=blog',

    'emulatePrepare' => true,

    'username' => 'root',

    'password' => 'guohao',

    'charset' => 'utf8',

    'tablePrefix' => 'tbl_',

   ),

配置authManager元件:

'authManager'=>array(

    'class'=>'CDbAuthManager',// Manager 的類型

    'connectionID'=>'db',//使用的資料庫元件

    'itemTable'=>'items',// 授權項目表 (預設:authitem)

    'assignmentTable'=>'assignments',// 授權配置設定表 (預設:authassignment)

    'itemChildTable'=>'itemchildren',// 授權子項目表 (預設:authitemchild)

),

items,assignments,itemchildren三個表的名字可随意改動。表結構請到framework/web/auth/schema.sql

'modules'=>array(

   'srbac' => array(

                   'userclass'=>'User', //可選,預設是 User

                    'userid'=>'id', //可選,預設是 userid

                    'username'=>'username', //可選,預設是 username

                    'debug'=>true, //可選,預設是 false

                     'pageSize'=>10, //可選,預設是 15

                     'superUser' =>'Authority', //可選,預設是 Authorizer

                      'css'=>'srbac.css', //可選,預設是 srbac.css

                       'layout'=>

                       'application.views.layouts.main', //可選,預設是

                     // application.views.layouts.main, 必須是一個存在的路徑别名

                        'notAuthorizedView'=>

                                'srbac.views.authitem.unauthorized', // 可選,預設是unauthorized.php

                    //srbac.views.authitem.unauthorized, 必須是一個存在的路徑别名

                       'alwaysAllowed'=>array(    //可選,預設是 gui

                       'SiteLogin','SiteLogout','SiteIndex','SiteAdmin',

                        'SiteError', 'SiteContact'),

                         'userActions'=>array(//可選,預設是空數組

                                         'Show','View','List'),

                         'listBoxNumberOfLines' => 15, //可選,預設是10

                         'imagesPath' => 'srbac.images', //可選,預設是 srbac.images

                         'imagesPack'=>'noia', //可選,預設是 noia

                         'iconText'=>true, //可選,預設是 false

                          'header'=>'srbac.views.authitem.header', //可選,預設是

                          // srbac.views.authitem.header, 必須是一個存在的路徑别名

                          'footer'=>'srbac.views.authitem.footer', //可選,預設是

                          // srbac.views.authitem.footer, 必須是一個存在的路徑别名

                         'showHeader'=>true, //可選,預設是false

                           'showFooter'=>true, //可選,預設是false

                             'alwaysAllowedPath'=>'srbac.components', //可選,預設是 srbac.components

                                  // 必須是一個存在的路徑别名

),

),

//srbac作為一個子產品,是以要聲明一下才能使用。

檢視srbac屬性清單可以得到每個屬性的詳細資訊。

導入 SbaseController(for using the auto checking access feature):

'import'=>array(

   'application.modules.srbac.controllers.SBaseController',

),

這樣就配置完了。接着你可以通路http://localhost/app/index.php?r=srbac/authitem

進入安裝頁面後如果有變紅的項目,說明你的配置有問題,請修改為正确的配置。然後點選安裝。

然後完成安裝,顯示成功後,你進入項目,找到protected\modules\srbac \views\authitem\install可以把這個檔案夾删掉,也可以重命名。然後找到protected\modules\srbac \controllers\AuthitemController.php

修改

protected function beforeAction($action) {

    //if(!$this->module->isInstalled() && $action->id != "install") {

    // $this->redirect(array("install"));

    // $this->actionInstall();

     // return false;

    //}

    if($this->module->debug) {

      return true;

    }

    if( Yii::app()->user->checkAccess(Helper::findModule('srbac')->superUser) ||

      !Helper::isAuthorizer()) {

      return true;

    } else {

      parent::beforeAction($action);

    }

}

因為這個地方判斷每次都是新安裝srbac。當你安裝完成後,這裡就沒用了。可以注釋掉了。

再通路連結http://localhost/app/index.php?r=srbac/authitem/authitem

就可以看到管理界面了。

随便看了下,果然很強大。