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

本文详细介绍了Yii2框架中如何实现权限控制,包括定义denyCallback函数处理未授权访问的情况,设置only参数限制特定操作,定义rules规则进行权限验证等。

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。

转载于:https://my.oschina.net/wuzhencan/blog/521644

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值