簡單的基於角色的訪問控制

2021-07-09 12:23:01 字數 2231 閱讀 5860

如果你需要簡單的基於角色的訪問控制而不是長長的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 中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴的,許可權賦予給角色,而把角色又賦予使用者,這樣的許可權設計很清楚,管理...