Perl催化剂;配置会话过期时间和Flash行为

时间:2012-04-16 21:50:51

标签: perl session catalyst

我刚刚发现,当我将Catalyst应用程序的会话插件(Catalyst :: Plugin :: Session)配置为过期时,它会使用闪存数据。更具体地说,我发现闪存数据不再带有新请求。

这听起来不正常吗?我怎么能应付这个?

2 个答案:

答案 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>