我正在实施CakePHP 2.4应用程序。
我有User
和Article
作为模特。
我没有articles/view
行动;仅限articles/edit
和articles/delete actions
。
当任何User
访问articles/edit
网页时,无论GET
还是POST
如何,该特定Article
都会被其他用户阻止编辑/删除。
以下是我需要建议的关键部分。
如果用户留在articles/edit/23
但30分钟内没有活动,
- 或 -
当用户离开articles/edit/23
页面时,
然后articles/23
现在可供其他用户编辑/删除。
在我的脑海中,我知道在文章表中,我需要一个名为current_locked_by的字段,该字段包含当前处于控制状态的用户的user_id。
我的问题是检测到会话不活动并且知道用户已离开编辑页面。
当用户未在任何输入元素中键入任何内容或更改任何下拉选项或选中/取消选中任何复选框 时,我在编辑页面中将会话不活动定义为 。
建议?
答案 0 :(得分:0)
您可以使用用户,资源和锁定时间的组合创建锁定表。 (关于你的规范什么时候开始不活动 - 我建议更简单地开始:“当他们加载页面时”。否则你也会在每次字段更改结束时写javascript写入你的数据库。)
每当有人进入编辑页面时,
这应该考虑到超时要求,只要你确保当他们试图保存他们的更改时仍然有锁(或其他人没有锁定记录)。
处理页面离开的一种技术是放入beforeFilter测试,删除该人的所有锁定。缺点
您也可以让该页面上的每个出站链接释放锁定(如进入插页式页面),并通过关闭标签,使用地址栏等超时让任何离开。 (这取决于用户的工作方式。)