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。