Как мне прочитать данные сервера из Catalyst :: Plugin :: Session :: Store :: File из другого приложения? - PullRequest
1 голос
/ 22 января 2012

На моем сервере запущено два приложения.Первое - это приложение Catalyst, настроенное на использование набора плагинов Session / Session::State::Cookie / Session::Store::File для сохранения состояния сеанса вна стороне сервера.

Другое приложение на Perl, но это не Catalyst.Я хочу, чтобы данные сеанса на стороне сервера из приложения Catalyst были доступны для другого приложения.

Во втором приложении я могу загрузить файлы cookie на стороне клиента и найти соответствующий идентификатор сеанса для приложения Catalyst,но после этого я застрял.Я не знаю, как сопоставить идентификатор сеанса с именем файла.Например, у меня есть идентификатор сеанса de079f151917d184219ef357f5298d0da478e015, но данные для этого сеанса находятся только в файле с именем fc1f6f651a2313c4081bcfef679061be35de40b7.Как не-Catalyst приложение должно знать, как найти этот файл?(Мой следующий вопрос: как приложение, не относящееся к Catalyst, должно читать этот файл, но я могу пересечь этот мост, когда доберусь до него).

Есть ли более простой способ сделать это с другимсхема хранения типа Session::Store::DBIC или Session::Store::FastMmap?

Ответы [ 2 ]

4 голосов
/ 23 января 2012

Session::Store::File использует Cache :: FileCache . Просто создайте экземпляр Cache::FileCache с cache_root, соответствующим тому, где ваше приложение помещает свои данные сеанса, затем используйте $cache->get("session:$sessid"), чтобы получить данные сеанса для данного $sessid, и, если вам это нужно, используйте $cache->get("expires:$sessid"), чтобы получить время истечения, так что вы можете игнорировать сеанс, если его срок истекает до time().

1 голос
/ 23 января 2012

Если возможно, я бы переключил хранилище сеансов в базу данных, тогда не нужно искать файлы.

Надеюсь, это поможет.

...