
Для этого нужно выполнить несколько шагов.
1. Создание общих cookie для frantend и backend.
В файл common\config\params-local.php добавляем свойства, которые будут общие для обоих приложений:<?php return [ //ключ для кук общий (frontend + backend) 'cookieValidationKey' => 'eq4ufHXrZ3CsG3TyYAmStVJT6r7j53-j', //домен для кук 'cookieDomain' => '.site.com', ];Сам ключ можно выбрать любой или перегенерировать в самом конце на новый командой init.
- Свойство 'cookieValidationKey' – ключ, по умолчанию устанавливается в двух файлах:
frontend\config\main-local.php
например:
$config = [ 'components' => [ 'request' => [ // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => 'eq4ufHXrZ3CsG3TyYAmStVJT6r7j53-j', ], ], ];Теперь можно удалить из этих файлов строку с ключем, а в данном примере и весь массив 'components, чтобы осталось':
$config = [];
- Свойство 'cookieDomain' тут и дальше потребуется если приложения frantend и backend находятся на разных поддоменах. Например
и
http://admin.site.com для backend.
Если же админка (backend) доступна как
http://site.com/admin
свойство 'cookieDomain' указывать не нужно.
Значение свойства 'cookieDomain' должно соответствовать названию основного домена. Точка спереди значит, что cookie будут доступны и на всех его поддоменах (например site.com и на forum.site.com).
При переносе на хостинг, если там домен будет другой – нужно внести изменения в этот файл.
- Что бы при переносе из репозитория и выполнении команды
initна другом компьютере или хостинге у нас свойство 'cookieValidationKey' прописалось и сгенерировалось в нужном файле, как и свойство 'cookieDomain', нужно подправить файлы из папки environments.
В файлах environments\dev\common\config\params-local.php и environments/prod/common/config/params-local.php добавляем:
<?php return [ //ключ для кук общий (frontend + backend) 'cookieValidationKey' => '', //домен для кук 'cookieDomain' => '.example.com', ];
В файлах
environments/dev/backend/config/main-local.php
environments/dev/frontend/config/main-local.php
меняем блок:
$config = [ 'components' => [ 'request' => [ // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => '', ], ], ];на
$config = [];
В файлах
environments/prod/backend/config/main-local.php
environments\prod\frontend\config\main-local.php
меняем блок:
return [ 'components' => [ 'request' => [ // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => '', ], ], ];на
<?php return [];таким образом ключ сгенерируется автоматически при выполнении команды init в одном общем файле.
Так же в файле environments\index.php меняем два таких массива (для Development и Production)
'setCookieValidationKey' => [ 'backend/config/main-local.php', 'frontend/config/main-local.php', ],на 2 таких:
'setCookieValidationKey' => [ 'common/config/params-local.php', ],
2. Настройка конфигурационных файлов.
Теперь нужно подключить общие свойства из common\config\params-local.php в оба файла конфигурации. Для этого в frontend\config\main.php и backend\config\main.php в массив request (из массива components) добавить:'components' => [ 'request' => [ 'cookieValidationKey' => $params['cookieValidationKey'], … ],
Далее в frontend\config\main.php и backend\config\main.php
сделать идентичными два следующих массива:
'user' => [ 'identityClass' => 'common\models\User', 'enableAutoLogin' => true, 'identityCookie' => ['name' => '_identity', 'httpOnly' => true, 'domain' => $params['cookieDomain']], ], 'session' => [ 'name' => 'advanced', 'cookieParams' =>[ 'httpOnly' => true, 'domain' => $params['cookieDomain'], ]Тут, кроме того, что убрать в названиях компонентов приставки frantend или backend, так же добавляется поле 'domain' для обоих массивов (если на разных поддоменах).
ответ на комментарий Дмитрий от 24.04.2018
Файл params-local.php
I need help!
ответ на комментарий Дмитрий от 24.04.2018
И потом ковырять файл vendor/yiisoft/yii2/web/User.php
ответ на комментарий Сергей от 25.04.2018