Yii2.0 访问控制过滤器(ACF)运用

public function behaviors(){
   return [
       'access' => [
           'class' => AccessControl::className(),

           //当规则禁止访问的时候会被调用denyCallback函数,这个回调函数可以自己定义
           'denyCallback' => function ($rule, $action) {
               throw new \Exception('您没有被允许访问这个页面!');
           },

           //指定了只应用在index,list和content动作上面
           'only' => ['index','list','content'],

           //规则
           'rules' => [

               [
                   'allow' => true,
                   'actions' => ['index','list'],

                   //调用index(或list)动作时会进过matchCallback函数规则验证,
                   //如果返回true表示验证通过,false则表示验证失败
                   'matchCallback' => function ($rule, $action) {
                       if(!Yii::$app->user->isGuest)
                           return true;
                   },

                   //“?”表示未登录的用户,“@”表示登录了的用户
                   'roles' => ['?'],

                   //匹配那些客户端IP。ip地址可以使用通配符(*)
                   'ips' => ['191.168.*'],

                   //匹配那些请求方式(如:GET,POST)。区分大小写
                   'verbs' => ['POST'],

               ],

           ],
       ]
   ];
}

 

    默认的,当一个没有通过鉴权的用户访问当前动作(action)时,ACF会这样做:

  • 假如是一个游客,它会调用yii\web\User::loginRequired()方法,重定向浏览器到登录页面。

  • 假如是一个已认证用户,它会抛出一个权限错误的异常yii\web\ForbiddenHttpException。

你可能感兴趣的:(Yii2.0 访问控制过滤器(ACF)运用)