如果你需要簡單的基於角色的訪問控制而不是長長的rbac過程,那麼這篇文章非常適合你。讓我們直入主題。
在使用者表中新增一列,列名roles
。建立相應的模型。在這裡它將被命名為 「user」。
當新增使用者可以給他們分配角色 「管理員」,「使用者」,「員工」等等。
在檔案protected/components/useridentity.php
新增如下內容:
[php]
class useridentity extends cuseridentity
return !$this->errorcode;
}public function getid()
}
在protected/components
資料夾下修改並建立檔案webuser.php
,然後重寫checkaccess()
方法。
[php]
<?php
class webuser extends cwebuser
$role = $this->getstate("roles");
if ($role === 'admin')
// allow access if the operation request is the current user's role
return ($operation === $role);
}}
在checkaccess()
方法中你可以定義自己的邏輯。
確保類可以被yii使用配置檔案 "protected/config/main.php" 必須包含以下內容:
[php]
'components' => array(
// ...
'user' => array(
'class' => 'webuser',
),
旁註:
[cwebuser::checkaccess()] 通常連線yii的驗證系統。 這裡我們使用乙個簡單的處理角色的系統來替換[cauthmanager] 定義的分級系統。詳細教程參加role-based access control
在控制器中你可以使用accessrules()
中的 "roles" 屬性進行過濾。
見下面的例子。
控制器必須包含以下**:
[php]
public function filters()
public function accessrules()
這裡對控制器中的 "admin" 動作進行了限制訪問: 只有擁有 "staff" 或 「devel」 角色才可以訪問。
你只需使用乙個基於使用者角色的選單。例如
[php]
<?php
$this->widget('zii.widgets.cmenu',array(
'items'=>array(
array('label'=>'users', 'url'=>array('/manageuser/admin'), 'visible'=>$user->checkacces('staff')),
array('label'=>'your ideas', 'url'=>array('/userarea/idealist'), 'visible'=>$user->checkacces('normal')),
array('label'=>'login', 'url'=>array('/site/login'), 'visible'=>$user->isguest),
),));
?>
乙個通常的需求,使用者只能夠修改自己的資料。 在這種情況下,使用者的角色是沒有任何意義的:將要修改的資料。
這就是為什麼 [cwebuser::checkaccess()] 有乙個可選的引數 "$param" 。現在假設我們要檢查的是乙個使用者是否有權更新post記錄的許可權。我們可以這樣寫:
[php]
當然webuser::checkaccess()
必須被擴充套件來使用 "$params" 引數。 這將取決於你的應用程式的邏輯。 比如, 這可能是非常簡單的$post->userid == $this->id
。 Informix 基於角色的訪問控制
在角色訪問控制中,角色即一組被授權的操作的集合。操作 許可給 角色 許可給 使用者 乙個使用者可以擁有多個角色。乙個角色可以擁有多個使用者。角色的定義,分配,刪除,只能由管理員執行。如果使用者不具備任何角色,那將不能進行任何操作。高階角色對低階角色有繼承功能。避免重複許可權設定。兩個互斥角色不能賦值...
RBAC 基於角色的訪問控制
rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...
RBAC 基於角色的訪問控制
rbac 是基於角色的訪問控制 role based access control 在 rbac 中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴的,許可權賦予給角色,而把角色又賦予使用者,這樣的許可權設計很清楚,管理...