yii2控制器中附加行为behavior()方法使用

导言

我们大家在用yii2做权限验证的时候会用到 behaviors() 方法,那么这个方法到底怎么用呢?我查了下资料。总结一下

1.概念

首先要明白behaviors()是创建权限验证必不可少的方法,相当于一个拦截器。把那些没有该权限的人应用相关的方法里;

不用这个方法之前我们要在每个方法里判断,是否登录啊,是否可以访问该动作啊。这样无疑增加了代码量,又不利于我们的维护。废话不多说
例子:

public function behaviors()
    {
        return [
            'bootstrap' => [//启动引导的相应格式
                [
                    'class' => 'yii\filters\ContentNegotiator',
                    'formats' => [
                        'application/json' => Response::FORMAT_JSON,
                        'application/xml' => Response::FORMAT_XML,
                    ],
                    'languages' => [
                        'en',
                        'de',
                    ],
                ],
            ],
           ],
            [
            'class' => 'yii\filters\AjaxFilter',//验证允许ajax执行的动作
            'only' => ['index'],
            'errorMessage'=>'Request must be XMLHttpRequest.'//当请求不是ajax请求是输出错误信息

            ],
            'access' => [    //behavior中的验证是否允许访问的认证类
                'except'=>['login'],//login不进行访问验证
                'only' => ['*'],//设置验证的动作方法‘*’,代表全部验证。
                #'only'=>['index','check','Add','confirm','del']//也可以写成这样
                'rules' => [//我们的验证规则,以数组形式,每一个数组代表一个验证规则
                    [
                        'allow' => false,//不允许
                        'roles' => ['?'],//?代表游客, @代表登录用户 如果为空,代表普遍适用。
                        'actions' => ['index']//设置验证的方法,因为这里的allow为false所以actions的方法都不能被游客访问。
                         'denyCallback'=>function($rule,$action)
                        {
                            return $this->redirect(['product/index']);
                        },//如果被拒绝访问,则会执行该匿名方法,该匿名方法可以获取两个值,$rule.$action 
                        'ips'=>'192.168.*'//表示该规则适用于192.168这个ip段,如为空则表示全部都适用

                    ],
                    [
                        'allow' => true,
                        'actions' => ['index', 'check', 'Add', 'Confirm'],
                        'roles' => ['@']
                    ]
                ]
            ]
        ];
    }

上面只写了一个常用的行为方式,具体的请看yii框架的API文档yii/fifters

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值