我配置了,RBAC 和 Yii2-Admin之后,所有的Controller是不是应该自动验证权限?

还是需要我在每个方法里面去验证?


我现在没有对用户设置任何权限,但是都可以访问,没有提示权限不足!

我现在是想实现权限的验证,不知道怎么做,请大神赐教!


我的配置如下:

    'modules' => [
       'admin' => [
           'class' => 'mdm\admin\Module',
           'layout' => 'left-menu',
//            'mainLayout' => '@app/views/layouts/default.php',
       ]
   ],



        'authManager' => [
           'class' => 'yii\rbac\DbManager', // or use 'yii\rbac\PhpManager'
           'defaultRoles' => ['guest'],
           'itemTable' => 'auth_item',
           'assignmentTable' => 'auth_assignment',
           'itemChildTable' => 'auth_item_child',
       ],
       'as access' => [
           'class' => 'mdm\admin\components\AccessControl',
           'allowActions' => [
//                'site/*',
//                'admin/*',
//                'some-controller/some-action',
               // The actions listed here will be allowed to everyone including guests.
               // So, 'admin/*' should not appear here in the production, of course.
               // But in the earlier stages of your development, you may probably want to
               // add a lot of actions here until you finally completed setting up rbac,
               // otherwise you may not even take a first step.
           ]
       ],


  • 评论于 2016-03-07 11:44:33
    public function beforeAction($action) {
    //获取请求的控制器
    $ctl=Yii::$app->controller->id;
    //获取控制器中要执行的action
    $action=Yii::$app->controller->action->id;
    //实际请求路径。比如:'order/add'
    $requestPath= strtolower($ctl. '/' .$action);

    if('现在拿到用户的请求路径了,你想怎么判断就怎么判断'){
    //判断有权限,那么让其继续执行
    return parent::beforeAction($action);
    }else{
    //走到这里,没有权限,抛异常,或者输出你想输出的东西
    throw new \yii\web\HttpException(403, '对不起,您现在还没获此操作的权限');
    }
    }


    回复
  • 评论于 2016-03-07 09:45:36

    不要直接继承yii\web\Controller,自己写个BaseController,继承yii\web\Controller,然后让自己的Controller继承BaseController,在BaseController中重写beforeAction($action),这个方法会在执行你的Controller的action之前执行,你在beforeAction中进行权限判断即可

    回复于 2016-03-07 11:03:28 回复
    在beforeAction里面怎么写权限的验证呢?求代码,刚学Yii见谅哈! 1
    回复
  • 评论于 2016-04-25 21:04:01

    怎么又是每个action去做验证权限的,yii2搭建完美后台并实现rbac权限控制实例教程 www.manks.top/article/

    yii2_frame_rbac_template
    回复
您需要登录后才可以评论。登录 | 立即注册