我一直在为帮助他们进行报价,管理库存和运行作业的公司开发Web应用程序。我们相信该应用将对该行业的其他公司有所帮助,但我不希望推出单独的应用实例,因此我们让它成为多用户(或多公司可能是一个更好的术语,因为每家公司都有多个用户)。MVC多用户身份验证/安全
它建在Codeigniter中(希望我已经在Rails中完成了,现在已经太晚了),并且我试图遵循瘦控制器胖模型的方法。我只是想确保我正确地做好事情的授权方面。当用户登录时,我会将sessionID和userID一起存储在会话中。我在想,用户接口的每个表都应该有一个额外的companyID
字段(通过关系间接访问的表可能不需要存储companyID,如果我错了,告诉我)。检索数据看起来非常简单,只需在AR中增加一个where子句即可将公司ID添加到select中,例如$this->db->where('companyID', $companyID)
。我对此很好。
但是,我想知道的是如何确保用户只能修改自己公司内的数据(如果他们发送的话,使用萤火虫或类似工具发送删除请求到随机报价ID)。我想到的一种方法是在模型中的每个更新和删除方法中添加上面的where子句。这在技术上是可行的,但我只想知道这是否是正确的做法,或者是否有其他想法。
另一种选择是在修改之前检查用户的公司是否拥有该记录,但这看起来像是数据库请求的双重化,而且我不确定是否有任何好处办法。
我很惊讶,我找不到这个问题的答案,我必须寻找错误的条件:p。但我很感谢这个话题的任何答案。
由于提前,
基督教