我正在编写一个需要相当短的会话到期时间(15 分钟)的 Catalyst 应用程序。我正在使用标准的 Catalyst 框架身份验证模块,因此用户数据存储在会话中——即,当您的会话到期时,您将被注销。
此应用程序的许多使用都需要超过 15 分钟才能完成,因此用户会经常提交表单,结果却发现他们的会话状态消失了,他们需要重新登录。
如果发生这种情况,我想保留原始表单提交,并且如果他们成功登录,则继续执行表单提交,就像会话没有过期一样。
我已经通过控制器中的 auto() 方法处理了身份验证内容——如果您请求一个需要身份验证的操作并且您当前没有登录,您将被重定向到 login() 方法,该方法显示登录表单,然后在提交后对其进行处理。当 auto 方法重定向到 login() 时,似乎应该可以存储请求和任何表单参数,然后如果 login() 成功,则将它们拉回来——但我不完全确定最好的以通用/标准/可重用的方式获取或存储此信息的方法。(我正在考虑将其存储在会话中,然后在将其拉出后将其删除;如果这看起来是个坏主意,那就另当别论了。)
是否有标准的“最佳实践”或食谱方法来做到这一点?
(一个皱纹:这些表格是通过 POST 提交的。)