Я создаю приложение в Symfony2 для замены устаревшего приложения, созданного с помощью CakePHP 1.3. Это большое приложение, и для удовлетворения потребностей конечных пользователей было принято решение о том, что новое приложение будет работать вместе с унаследованным приложением, а когда функции старой системы были переписаны в Symfony2, тогда пользователи будут беспрепятственно перенаправляться в новое приложение ,Как заставить Symfony2 использовать те же сеансы, что и CakePHP 1.3?
Чтобы свести к минимуму сбой, было также решено, что пользователю нужно будет только один раз войти в старое приложение и что новое приложение должно предоставлять доступ только пользователю, в зависимости от того, зарегистрировано ли оно или нет. Таким образом, новое приложение опирается на старое приложение для обработки безопасности. Кроме того, старое приложение CakePHP находится на www.domain.org
, а новое приложение Symfony2 находится на субдомене new.domain.org
.
Проблема, с которой я столкнулся сейчас, - это то, как я буду точно использовать сеанс, созданный в CakePHP в Symfony2. Я пробовал несколько вещей, таких как запись идентификатора пользователя в файл cookie, а затем получение Symfony2 для проверки того, установлен ли файл cookie или нет. Это позволяет пользователям перейти к новой системе из старой системы, но как только будет удалена ссылка на старую систему из новой системы, старая система загрузит пользователя, попросив снова войти в систему.
В коде CakePHP 1.3, каждая область имеет следующий код в верхней части:
$this->checkSession();
Я никогда не строил приложение CakePHP 1.3, и я не имею знание CakePHP 1.3 (я из CakePHP 2.0). Так делать немного покопаться, я нашел в файле core.php
конфигурации для сессии, которая заключается в следующем:
Configure::write('Session.cookie', 'DOMAIN');
Configure::write('Session.timeout', '120');
Configure::write('Session.start', true);
Configure::write('Session.checkAgent', true);
Configure::write('Security.level', 'medium');
Configure::write('Security.salt', '***RANDOM STRING***');
Configure::write('Security.cipherSeed', '***RANDOM STRING***');
Существует также некоторый код для ACL, но это, кажется, не содержат много или делают что-либо. К ним относятся:
Configure::write('Acl.classname', 'DbAcl');
Configure::write('Acl.database', 'default');
я могу изменить некоторые из кода в CakePHP, чтобы, возможно, согнуть его для работы с Symfony, но я не могу делать какие-либо радикальные изменения в код. Предыдущий программист, который построил CakePHP 1.3, давно исчез, и не оставил никакой документации.
Итак, как я могу заставить Symfony2 использовать те же сеансы, которые CakePHP создает и использует, а также не позволяет CakePHP регистрировать пользователя, если он нажмет на ссылку из нового приложения?
возможный дубликат [Как читать Cookie с помощью Symfony 2?] (Http: // StackOverflow. com/questions/17791519/how-to-read-a-cookie-using-symfony-2) – AD7six
Это не дубликат, так как это относится к сеансам. Кроме того, есть дополнительная проблема с тем, как CakePHP регистрирует пользователя, когда пользователь нажимает ссылку из приложения Symfony2. – mickburkejnr
Идентификатор сеанса хранится в файле cookie. Если это не дубликат, разница в том, что вы просите, не очевидна (ссылка на уже покрытую землю поможет). – AD7six