Ход моих действий такой:
Зашел на страницу https://xx.ru/order/view?id=123
В контроллере OrderController стоит поведение проверки авторизации:
Код: Выделить всё
use yii\web\Controller;
...
class OrderController extends Controller
{
/**
* {@inheritdoc}
*/
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@']
],
],
],
];
}
код авторизации:
Код: Выделить всё
if ($model->load(Yii::$app->request->post()) && $model->login()) { return $this->goBack(); }
Теперь я авторизован, на страницу /order/view/id?=123 запустил и показал информацию о заказе
Далее жму Редактировать и перехожу на страницу с методом actionUpdate в том же контроллере
Рендерится вьюшка update с _form с кодом селект2 от картика:
Код: Выделить всё
$form->field($model, 'tcejbo_id')->widget(\kartik\select2\Select2::className(), [
'initValueText' => empty($model->tcejbo) ? '' : $model->tcejbo->name,
'options' => [
'placeholder' => 'выбрать',
],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 2,
'ajax' => [ // << это опция для работы с получением данных аяксом
'url' => '/this-is-api-url/get-tcejbo',
'dataType' => 'json',
'data' => new \yii\web\JsExpression('function(params) { return {q:params.term}; }'),
],
],
])
в приложении я авторизован (как сказал выше), страница с редактированием открывается нормально,
встаю в поле с селект2 и ввожу два символа и происходит запрос контроллер actionGetTcejbo в ThisIsApiUrlController, код контроллера:
Код: Выделить всё
class ApiTeamController extends \yii\web\Controller
{
public function behaviors()
{
return [
[
//'class' => HttpBearerAuth::className()
'class' => CompositeAuth::className(),
'authMethods' => [
'bearerAuth' => [
'class' => HttpBearerAuth::className(),
//'class' => MyBearerAuth::className(),
],
'basicAuth' => [
'class' => HttpBasicAuth::className(),
'auth' => function ($username, $password) {
return User::checkLogin($username, $password);
},
],
HttpBasicAuth::className()
//HttpBasicAuth::class
],
],
[
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
],
];
}
public function actionGetTcejbo($q = null)
{
$searchModel = new actiontTcejboSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams, [
'qname' => $q
]);
$dataProvider->pagination = false;
/** @var TeamUser[] $models */
$models = $dataProvider->getModels();
$return = [];
foreach ($models as $model) {
$return [] = [
'id' => $model->id,
'text' => $model->name,
];
}
return ['results' => $return];
}
такой запрос один раз в несколько недель запрашивается, не засекал время... но не часто, но все равно не удобно, ведь уже авторизован... видимо каким-то другим методом... через куки может быть... не понимаю...
не понимаю как исправить... поидее я уже авторизован, но я так понимаю ему нужна на этапе аторизации model->login() авторизация basicauth...
не понимаю и не могу связать воедино, чтобы поправить...
возможно где-то что-то не подключил?? помогите, пожалуйста