所以我有不同的用户角色,即国家管理员,区域管理员,市政管理员和外部用户。在我的用户表上,我有列字段" role"我希望外部用户无法在我生成的CRUD上创建一些东西。我该怎么做?
public function behaviors(){
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
],
'access' => [
'class' => \yii\filters\AccessControl::className(),
'only' => ['index','create','update','view'],
'rules' => [
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
],
// everything else is denied
],
],
];
}
答案 0 :(得分:0)
yii\rbac\DbManager
类作为Authentication Manager Component roles
behaviors\access
下添加它们
附注:我建议为每个CRUD功能(以及其他操作)单独授予权限。这样,您将永远不会发现自己处于单一权限授予过多访问权限的情况。
示例:较低级别的权限:
createUser
updateUser
viewUser
deleteUser
activateUser
deactivateUser
将上述所有权限合并到allActionUser
组中,并将其分配给AdminRole
个角色。
将viewUser
,activateUser
,deactivateUser
合并到powerUser
群组,并将其分配给powerUserRole
角色。
然后为用户分配角色,组和/或单个细化权限。这将为您分配权限和满足您的业务需求(或您的用例)提供最大的多功能性。
花费额外的时间来理解规则并广泛使用它们来定义自定义逻辑。使用控制器代码覆盖某些内容适用于一个功能,但您很快就会发现它无法很好地扩展。
规则的一个很好的例子是updateUserSelf
。您可能不希望为最终用户分配updateUser
权限,因为它将是 wild-west ,因为每个人都将更新每个人的信息。但您肯定希望为最终用户提供更新自己信息的能力。这就是规则的便利之处。