我在我的服务器上运行两个应用程序。第一个是Catalyst应用程序,配置为使用Session
/ Session::State::Cookie
/ Session::Store::File
插件套件在服务器端保存一些会话状态。
另一个应用程序是在Perl中,但它不是Catalyst。我希望来自Catalyst应用程序的服务器端会话数据可供其他应用程序使用。
在第二个应用程序中,我可以加载客户端cookie并找到Catalyst应用程序的相关会话ID,但之后我就卡住了。我不知道如何将会话ID映射到文件名。例如,我有一个会话ID de079f151917d184219ef357f5298d0da478e015
,但该会话的数据只能在名为fc1f6f651a2313c4081bcfef679061be35de40b7
的文件中找到。非Catalyst应用程序应该如何知道如何找到该文件? (我的后续问题是非Catalyst应用程序应该如何读取该文件,但是当我到达它时我可以越过那个桥梁。)
使用Session::Store::DBIC
或Session::Store::FastMmap
等其他存储方案是否有更简单的方法可以做到这一点?
答案 0 :(得分:4)
Session::Store::File
使用Cache::FileCache。只需使用与您的应用放置其会话数据的位置相对应的Cache::FileCache
实例化cache_root
,然后使用$cache->get("session:$sessid")
获取给定$sessid
的会话数据,如果需要它,使用$cache->get("expires:$sessid")
来获取到期时间,以便在会话到期时间time()
之前忽略会话。
答案 1 :(得分:1)
如果有可能我会将会话存储切换到数据库,那么就不需要搜索文件了。
希望有所帮助。