Вам, вероятно, потребуется создать 2 отдельных сеанса. Для этого я думаю, что расширенный шаблон будет лучшей отправной точкой. Frontend будет вашим основным сайтом, а backend будет областью входа в систему. Вы даже можете сделать 3-й для вашей панели администратора, если это необходимо.
В вашей конфигурации вам нужно будет указать разные сеансы. То, как я его использую, заключается в том, чтобы полностью отделить мой интерфейс от бэкэнда.
Пример конфига;
'components' => [
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_frontendUser', // unique for frontend
]
],
'session' => [
'name' => 'PHPFRONTSESSID',
'savePath' => sys_get_temp_dir(),
],
....
Вы бы сделали то же самое для бэкэнда, только используя другие имена.
Если они все еще могут зайти на основной сайт, пока они вошли в систему, вам нужно будет выполнить некоторые дополнительные проверки, например, проверить, существует ли другой сеанс. Вы можете создать специальное правило, чтобы перенаправлять их с основного сайта в область входа в систему, если она существует. Если им по-прежнему нужен доступ к основному сайту, но они знают, вошли ли они в систему (например, показать выход из системы вместо ссылки для входа или показать свое имя пользователя), вам придется сослаться на другой сеанс.
Я не уверен, что вы действительно можете использовать сеанс из другого раздела... Обойти это можно было бы, сохранив данные в первом сеансе о втором сеансе. В вашей процедуре входа в систему вам нужно будет ввести пользовательские данные в первый сеанс. А при выходе удалить.
Не уверен, к чему мы стремимся, и есть еще некоторые вещи, на которые нужно обратить внимание (например, можете ли вы получить доступ к другому сеансу без хакерских опций).
Тем не менее, я думаю, что ваше зависание прямо сейчас заключается в том, что вам нужно определить отдельные значения сеанса в вашей конфигурации.
Я также должен добавить, что я написал вики о том, как иметь 2 отдельных сеанса здесь: http://www.yiiframework.com/wiki/814/guide-how-to-actually-separate-frontend-user-and-backend-admin-on-yii2-advanced/
Проблема с yiii2 advanced: по умолчанию, если вы входите в интерфейс, вы также входите в бэкэнд. Что ж, если вы используете интерфейс в качестве участников и серверную часть в качестве администратора, вам это не нужно! Участник не должен входить в админку. Таким образом, вы должны сделать их 2 отдельными сеансами.
Хотя моя вики предназначена для немного другого использования, я думаю, что она связана с той же проблемой и может помочь вам понять это.
23.11.2015