2016-10-07 5 views
0

У меня есть надлежащим образом работающий контроллер, и я хочу приложить к нему поведение базового auth. Я добавляю метод behaviors() к контроллеру и var_dump($this->behaviors); перед действием. Все правильно. Проблема в том, что HttpBasicAuth не работает с методом.Поведение Yii2 в контроллере не работает

Вот мой код:

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; 
      } 
     ], 

    ]; 
} 

ответ

-1

ребята, я решил эту ошибку.

Если мы хотим вызвать поведение, и у нас есть метод beforeAction в нашем контроллере. Ваш beforeAction должен выглядеть. Метод, который вызывает поведение, расположенное в методе beforeAction родительского класса.

public function beforeAction($event) 
{ 
    ... 

    return parent::beforeAction($event); 
} 
0

auth пары должны быть ключом 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

+0

Yeap, я изменил, но все тот же. Я скопирую и вставляю новый код в вопрос –

+0

Это был правильный ответ на ваш первый вопрос ... Как я мог предположить, что у вас был неправильный метод beforeAction? ... – soju