我正在开发一个rails应用程序,允许用户向系统中的其他用户发送活动邀请。邀请的收件人可以选择接受或拒绝邀请(有点像我想的e-vite)。
我的计划是创建一个处理接受和拒绝邀请的资源。如果需要,我将首先让用户登录,然后对接受/拒绝页面进行“友好转发”。这里特别的是我只希望一个人能够接受邀请。然后所有其他人将获得“已接受事件”消息。我关心的是我正在寻找有关如何处理的建议的两件事:
1。)竞争条件:
如何处理两个人(几乎)同时接受同一事件?有没有办法帮助防止这种情况,以确保只有一个人可以声称事件的“所有权”。
2。)安全性
我是否应该做些什么来确保人们不会欺骗接受链接并开始在活动/邀请模型中将不需要的行放入我的数据库?
仅为上下文,“邀请”将用于保姆,所以我真的只想要一个人接受邀请。
答案 0 :(得分:2)
(1)比赛条件: 邀请的状态(已接受,已拒绝或尚未响应)可以作为整数值存储在数据库表中。数据库基础设施应该处理竞争条件。
(2)安全: 不要为用户提供在数据库中创建新行的方法,并在Ruby代码中添加一个条件来检查数据库的状态,这将允许用户仅在邀请具有某种状态时才更新数据库