控制器中的Yii2行为不起作用

时间:2016-10-07 11:57:48

标签: php yii2 basic-authentication behavior

我有正确工作的控制器,我想附加一个基本身份验证的行为。我将方法behaviors()添加到控制器,并在操作前添加var_dump($this->behaviors);。一切都是正确的。问题是HttpBasicAuth无法使用方法。

这是我的代码:

public function behaviors()
{
    return [
        'basicAuth' => [
            'class' => \yii\filters\auth\HttpBasicAuth::className(),
            'auth' => function ($username, $password) {
                if (! $this->isValidUser($username, $password)) {
                    return User::findByUsername($username);
                }

                return false;
            }
        ],

    ];
}

2 个答案:

答案 0 :(得分:0)

auth param应该是basicAuth数组的键:

public function behaviors()
{
    return [
        'basicAuth' => [
            'class' => \yii\filters\auth\HttpBasicAuth::className(),
            'auth' => function ($username, $password) {
                // ...
            }
        ],
    ];
}

http://www.yiiframework.com/doc-2.0/yii-filters-auth-httpbasicauth.html

答案 1 :(得分:-1)

伙计们,我解决了这个错误。

如果我们想要调用行为,我们在控制器中有beforeAction metohd。 你的beforeAction应该是这样的。调用位于父类的方法beforeAction中的行为的方法。

public function beforeAction($event)
{
    ...

    return parent::beforeAction($event);
}