2018-05-30 11:39:30 [185.98.85.252][10][-][info] mode=checkauth, name=PHPSHOPSESSID id=7qecub9vhhe9kdbn41o7uoke0t
2018-05-30 11:39:31 [185.98.85.252][10][-][info] mode=init, name=PHPSHOPSESSID id=0hdt4645sdimqcig9jfa473gnf
2018-05-30 11:39:32 [185.98.85.252][10][-][info] mode=file, name=PHPSHOPSESSID id=b3j5m590248t5d1flj3tppdsk9
2018-05-30 11:39:33 [185.98.85.252][10][o84uje1u52692o29bihthc36oa][info] mode=import, name=PHPSHOPSESSID id=o84uje1u52692o29bihthc36oa
Получается, что при каждом запросе новая сессия открывается. А мне надо чтобы как то одна сессия началась при mode=checkauth, так и оставалась, чтобы можно было при одном запросе записать переменную в сессию, а при других запросах использовать эти данные. В чем ошибка? Честно, до конца в сессиях не разобрался, но здесь может, какая-нибудь особенность Yii, связанная с basic авторизацией? Может надо как то правильно сессию начать, когда проходит авторизация? Или после авторизации надо как-то самому cockie создавать и отправлять её в ответ сервису?
Код: Выделить всё
<?php
class UnfController extends Controller
{
public function beforeAction($action)
{
if (in_array($action->id, ['index'])) {
$this->enableCsrfValidation = false;
}
return parent::beforeAction($action);
}
public function behaviors()
{
return [
'basicAuth' => [
'class' => \yii\filters\auth\HttpBasicAuth::className(),
'auth' => function ($username, $password) {
$user = Admin::findByUsername( $username );
if ( $user->validatePassword( $password ) ) {
return $user;
}
return null;
},
],
];
}
public function actionIndex()
{
$request = Yii::$app->request;
$session = Yii::$app->session;
if( $type == 'catalog' && $mode == 'checkauth' ){
print "success\n".$session->getName()."\n".$session->getId()."\n"."_csrf-shop=".Yii::$app->request->csrfParam;
Yii::info('mode=checkauth, name='.$session->getName().' id='.$session->getId() ,'1cunf');
//2018-05-30 11:39:30 [185.98.85.252][10][-][info][1cunf] mode=checkauth, name=PHPSHOPSESSID id=7qecub9vhhe9kdbn41o7uoke0t
}
if( $type=='catalog' && $mode == 'init' ){
Yii::info('mode=init, name='.$session->getName().' id='.$session->getId() ,'1cunf');
//2018-05-30 11:39:31 [185.98.85.252][10][-][info][1cunf] mode=init, name=PHPSHOPSESSID id=0hdt4645sdimqcig9jfa473gnf
$session->set('TEST_VAR' , 1234 ); //Хочу сохранить переменную сессию
}
if( $type == 'catalog' && $mode == 'file' ){
Yii::info('mode=file, name='.$session->getName().' id='.$session->getId() ,'1cunf');
//2018-05-30 11:39:32 [185.98.85.252][10][-][info][1cunf] mode=file, name=PHPSHOPSESSID id=b3j5m590248t5d1flj3tppdsk9
$session->get('TEST_VAR'); // Выдаёт null
}