如何在 Yii2 Advance App 中设置用户权限类型
How do I set user permission types in Yii2 Advance App
所以我有不同的用户角色,分别是国家管理员、地区管理员、市政管理员和外部用户。在我的用户 table 上,我有列字段 "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
],
],
];
}
你看过这个吗:
https://www.yiiframework.com/doc/guide/2.0/en/security-authorization#rbac?
- 使用
yii\rbac\DbManager
class 作为身份验证管理器组件
- 运行 迁移以创建安全表
- 定义您的低级别权限。
- 将它们添加到
behaviors\access
中的 roles
下
- 将他们分组为更高级别的权限和角色;分配给
用户
- 为您的自定义逻辑使用规则。
- 分配默认权限。
旁注:我建议为每个单独的 CRUD 函数(和其他操作)设置单独的权限。这样,您将永远不会发现自己处于单一权限授予过多访问权限的情况。
示例: 较低级别的权限:
createUser
updateUser
viewUser
deleteUser
activateUser
deactivateUser
将以上所有权限组合成一个allActionUser
组,并将其分配给AdminRole
角色。
将viewUser
、activateUser
、deactivateUser
组合成powerUser
组,分配给powerUserRole
角色。
然后为用户分配角色、组 and/or 个人细化权限。这将为您在分配权限和满足您的业务需求(或您的用例)方面提供最大的多功能性。
花额外的时间来理解规则并广泛使用它们来定义您的自定义逻辑。用控制器代码覆盖某些东西适用于一个功能,但您很快就会发现它的扩展性不好。
规则的一个很好的例子是updateUserSelf
。您可能不想向最终用户分配 updateUser
权限,因为这将是一个 狂野西部 ,因为每个人都会更新每个人的信息。但是您当然希望让您的最终用户能够更新他们自己的信息。这就是规则派上用场的地方。
所以我有不同的用户角色,分别是国家管理员、地区管理员、市政管理员和外部用户。在我的用户 table 上,我有列字段 "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
],
],
];
}
你看过这个吗: https://www.yiiframework.com/doc/guide/2.0/en/security-authorization#rbac?
- 使用
yii\rbac\DbManager
class 作为身份验证管理器组件 - 运行 迁移以创建安全表
- 定义您的低级别权限。
- 将它们添加到
behaviors\access
中的 - 将他们分组为更高级别的权限和角色;分配给 用户
- 为您的自定义逻辑使用规则。
- 分配默认权限。
roles
下
旁注:我建议为每个单独的 CRUD 函数(和其他操作)设置单独的权限。这样,您将永远不会发现自己处于单一权限授予过多访问权限的情况。
示例: 较低级别的权限:
createUser
updateUser
viewUser
deleteUser
activateUser
deactivateUser
将以上所有权限组合成一个allActionUser
组,并将其分配给AdminRole
角色。
将viewUser
、activateUser
、deactivateUser
组合成powerUser
组,分配给powerUserRole
角色。
然后为用户分配角色、组 and/or 个人细化权限。这将为您在分配权限和满足您的业务需求(或您的用例)方面提供最大的多功能性。
花额外的时间来理解规则并广泛使用它们来定义您的自定义逻辑。用控制器代码覆盖某些东西适用于一个功能,但您很快就会发现它的扩展性不好。
规则的一个很好的例子是updateUserSelf
。您可能不想向最终用户分配 updateUser
权限,因为这将是一个 狂野西部 ,因为每个人都会更新每个人的信息。但是您当然希望让您的最终用户能够更新他们自己的信息。这就是规则派上用场的地方。