Php 如何在Yii2 Advance应用程序中设置用户权限类型

Php 如何在Yii2 Advance应用程序中设置用户权限类型,php,yii2,yii2-advanced-app,Php,Yii2,Yii2 Advanced App,所以我有不同的用户角色,即国家管理员、地区管理员、市政管理员和外部用户。在我的用户表上,我有一个列字段“role”,我希望外部用户不能在我生成的CRUD上创建一些内容。我该怎么做 public function behaviors(){ return [ 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [

所以我有不同的用户角色,即国家管理员、地区管理员、市政管理员和外部用户。在我的用户表上,我有一个列字段“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
            ],
        ],
    ];
}
你看过这个吗: ?

  • 使用
    yii\rbac\DbManager
    类作为身份验证管理器组件
  • 运行迁移以创建安全表
  • 定义您的低级权限
  • 将它们添加到
    行为\访问中的
    角色下
  • 将它们分组为更高级别的权限和角色;分配给 使用者
  • 为自定义逻辑使用规则
  • 分配默认权限

  • 旁注:我建议对每个单独的CRUD函数(和其他操作)拥有单独的权限。这样,您将永远不会发现自己处于单一权限授予过多访问权限的情况下

    示例:较低级别权限:

    • createUser
    • updateUser
    • viewUser
    • deleteUser
    • activateUser
    • deactivateUser
    将上述所有权限合并到一个
    allActionUser
    组中,并将其分配给
    AdminRole
    角色

    viewUser
    activateUser
    deactivateUser
    组合成一个
    powerUser
    组,并将其分配给
    powerUserRole
    角色

    然后为用户分配角色、组和/或单个粒度权限。这将使您在分配权限和满足业务需求(或用例)方面具有最大的通用性

    花额外的时间理解规则,并广泛使用它们来定义自定义逻辑。用控制器代码覆盖某些东西对一个函数有效,但您很快就会发现它不能很好地扩展


    一个很好的规则示例是
    updateUserSelf
    。您可能不想将
    updateUser
    权限分配给最终用户,因为这将是一个疯狂的西部,因为每个人都将更新每个人的信息。但是你肯定想让你的最终用户能够更新他们自己的信息。这就是规则派上用场的地方。

    非常欢迎您。另外,欢迎来到StackOverflow社区。看起来这是你的第一个问题。为了获得最好的结果,在你的问题中尽量描述。签出此指南:。如果您对答案感到满意,请将其标记为正确。