2012-04-16 58 views
0

我刚刚发现,当我配置Catalyst应用程序(Catalyst :: Plugin :: Session)的会话插件过期时,它会与闪存数据一起使用。更具体地说,我发现闪存数据不再继承新的请求。Perl催化剂;配置会话过期时间和闪存行为

这听起来很正常吗?我该如何处理这个问题?

+0

能否请您告诉我们您的配置。 – dgw 2012-04-16 22:13:02

回答

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> 
+0

是的,我的会话配置错误。谢谢。 – s2cuts 2012-04-16 23:00:29

4

非常正常。整个会话的重点是能够将一个请求中的数据与另一个请求中的数据关联起来。当你让某个请求的会话过期时,你说这个请求的数据不应该与任何未来的请求有关。

更具体地说,闪存数据是会话数据的一部分 - 例如,请参阅Catalyst/Plugin/Session.pm文件中的_save_flash方法。另请参阅big warning for the delete_session method

注意:此方法也会删除您的闪存数据。

如何应对?您需要使用Session插件以外的任何方案来保存来自请求的数据。如果不了解更多有关应用的信息,您试图坚持什么样的数据,以及如何将旧会话的数据与新请求关联起来,我无法开始提出更具体的建议。