2015-09-26 08:52:27 6574次浏览 1条回答 3 悬赏 100 金钱

大家好

请问如下的需求应该如何使用AccessControl 实现呢?
controller中有三个方法。

  1. hello
  2. name
  3. delete

用户有2个

  1. admin [rbac中分配了3个方法]
  2. user [rbac中 只有 hello]

需求:

  1. 所有未登录用户不能访问任何方法
  2. 登录用户中 根据rbac的授权 来访问。

不知道如何实现呢?

我现在使用
beforeaction 来判断rbac的权限,但是 使用了 beforeaction 之后 我设置的VerbFilter 对 delete方法的post过滤就失效了。 注释beforeaction后 是正常的。

这是我现在的 behaviors配置 但是无法实现 2个已登录用户的 权限区别。

public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['post'],
                ],
            ],
            'access' => [
                'class' => \yii\filters\AccessControl::className(),
                //'only' => ['hello',],
                'rules' => [
                    [
                        'allow' => false,
                        'roles' => ['?'],
                    ],
                ],
            ],
        ];
    }

手册中 AccessControl类 有方法beforeAction 说明是 在所有的过滤之后 在执行之前的最后一个判断的时间了,我感觉比较适合我现在的情况,但是水平太菜,不知道如何去配置AccessControl类的beforeAction 。

请问该如何使用AccessControl 简洁优雅的实现我的需求呢?

最佳答案

  • 性感的农民 发布于 2015-09-26 16:29 举报
    public function behaviors()
        {
            return [
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'delete' => ['post'],
                    ],
                ],
                'access' => [
                    'class' => \yii\filters\AccessControl::className(),
                    'only' => ['hello','name','delete'],
                    'rules' => [
                        [
                            'actions' => ['hello'],
                            'allow' => true,
                            'roles' => ['user'],
                        ],
                        [
                            'actions' => ['hello','name','delete'],
                            'allow' => true,
                            'roles' => ['admin'],
                        ],
                    ],
                ],
            ];
        }
    
    , 觉得很赞
    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
xjdata
CEO

xjdata

注册时间:2011-12-07
最后登录:2021-07-09
在线时长:112小时28分
  • 粉丝23
  • 金钱14169
  • 威望75
  • 积分16039

热门问题