我正在写一个Catalyst应用程序,它需要有一个相当短的会话到期时间(15分钟).我正在使用标准的Catalyst框架身份验证模块,因此用户数据存储在会话中 - 即,当会话到期时,您将被注销.
此应用程序的许多用途将需要> 15分钟才能完成,因此用户将经常提交表单,只是发现他们的会话状态已经消失,他们需要重新登录.
如果发生这种情况,我想保留原始表单提交,如果他们成功登录,继续执行表单提交,就像会话未过期一样.
我已经通过控制器中的auto()方法处理了身份验证内容 - 如果您请求需要身份验证的操作并且您当前未登录,则会重定向到login()方法,该方法会显示登录表单,然后在提交后处理它.似乎应该可以在auto方法重定向到login()时存储请求和任何表单参数,然后在login()成功时将它们拉回来 - 但我不完全确定最好的以通用/标准/可重用方式获取或存储此信息的方法.(我正在考虑将它存储在会话中,然后在它被撤回后将其删除;如果这看起来是个坏主意,那还有其他问题需要解决.)
有没有标准的"最佳实践"或烹饪方法来做到这一点?
(一个皱纹:这些表格是通过POST提交的.)
最后,我们最终在 auto() 中获取待处理的请求(URL+参数),对其进行序列化和加密,并通过登录页面上的隐藏表单元素传递它。如果我们收到填充了隐藏元素的登录请求,我们将对其进行解密和反序列化,然后进行适当的重定向(确保通过标准的“此用户可以执行此操作吗”代码路径)。
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |