我在哪里阻止用户访问其他用户的数据?

时间:2010-05-28 13:32:06

标签: model-view-controller access-control

在我正在建设的网站上,我需要允许用户编辑他们的订单。很容易。但是,如何确保用户无法编辑其他用户的订单?我是否在模型或控制器中执行检查以验证订单是否属于经过身份验证的用户?

2 个答案:

答案 0 :(得分:1)

将检查放入视图(是的,视图)以快速响应用户错误。

将检查放入控制器以确保数据完整性。

例如,在基于Web的应用程序中,您可能使用浏览器javascript来检查所有字段,包括用户名,以便用户快速响应以修复错误的事务。但是,回到您的服务器,您不能依赖浏览器来真正验证数据,因为浏览器不在您的控制范围内 - 它可能有意或无意地损坏,并且没有按照您的意图进行验证。因此,您需要重新验证服务器上的所有以确保完整性。

答案 1 :(得分:0)

希望您的网站没有办法让用户甚至尝试编辑其他人的订单。但是,如果仍然可以尝试,您可以将该逻辑放在模型或控制器中。这是一个意见问题。有些人会说控制器应该执行访问检查等操作,模型只知道如何修改自身。其他人会说“胖模型,瘦的控制器”,并说安全检查需要跨控制器重复使用,所以他们应该进入模型。这是你的电话。