我刚刚发现,当我将Catalyst应用程序的会话插件(Catalyst :: Plugin :: Session)配置为过期时,它会使用闪存数据。更具体地说,我发现闪存数据不再带有新请求。
这听起来不正常吗?我怎么能应付这个?
答案 0 :(得分:5)
完全正常。会话的整个要点是能够将来自一个请求的数据与另一个请求中的数据相关联。当您让某个请求的会话过期时,您说该请求的数据不应与任何将来的请求有任何关系。
更具体地说,flash数据是会话数据的一部分 - 例如,请参阅_save_flash
文件中的Catalyst/Plugin/Session.pm
方法。另请参阅big warning for the delete_session
method:
注意:此方法也会删除您的Flash数据。
如何应对?您需要使用Session插件以外的任何方案来保留请求中的数据。在不了解您的应用程序的更多信息,您试图保留的数据以及如何将旧会话中的数据与新请求相关联的情况下,我无法开始提出更具体的建议。
答案 1 :(得分:2)
例如,使用数据库后端配置会话时,您必须添加flash_to_stash
作为选项:
<session>
dbi_dbh DB
dbi_table sessions
dbi_id_field id
dbi_data_field session_data
dbi_expires_field expires
flash_to_stash 1
expires 3600
</session>