Я задал аналогичный вопрос об этом в прошлом в отношении Single Sign On (SSO), но я понял, что это работает только для субдоменов, но в моем случае я не использую субдомены, а просто разные приложения Yii на одном сервере под одним домен.
У меня есть www.mydomain.com/app1 и www.mydomain.com/app2
Оба приложения используют одну и ту же базу данных и используют одни и те же таблицы для входа в систему.
Что я хочу :
Учетные записи для обоих приложений одинаковы
Что не происходит
(4). Пользователь перенаправляется в приложение 1, но по-прежнему предлагается выполнить вход.
Затем я проверил, чтобы просмотреть файлы cookie и сеанс в app1 и app2, и я сделал следующее для обоих main.php в папке config:
// application components 'components'=>array( 'user'=>array( // enable cookie-based authentication 'allowAutoLogin'=>true, 'class'=>'WebUser', ), 'session'=> array( 'timeout'=> 1440 ), 'partyroles'=>array( // enable cookie-based authentication 'class'=>'WebUser', ), // uncomment the following to enable URLs in path-format 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( '<controller:\w+>/<id:\d+>'=>'<controller>/view', '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', ), ),
Я застрял на этом всю неделю, и, поскольку крайний срок приближается, я думаю, пришло время получить некоторую необходимую помощь!
EDIT Это мой файл конфигурации main.php, инициирующий сеансы с использованием CDbHttpSession. Теперь я храню сессии в таблице базы данных YiiSession:
'sessionName'=>'app', 'class'=>'CDbHttpSession', 'autoCreateSessionTable'=> false, 'connectionID'=>'db', 'sessionTableName'=>'YiiSession', 'useTransParentSessionID' =>($_POST['PHPSESSID']) ? true: false, 'autoStart' => 'false', 'cookieMode' => 'only', 'timeout'=> 300 ),
Вход в систему теперь выполняется, и сеансы хранятся в базе данных, но до сих пор не регистрируются в обоих приложениях. Оба приложения имеют такую же конфигурацию.