0

我正在构建一个带有管理员模块和用户模块的数据库支持的 Web 应用程序。管理员模块允许管理员修改存储在数据库中的实体的属性。用户模块根据数据库的状态提供动态生成的表单。

考虑以下用例:

  1. 用户请求包含表单的网页,其中显示的表单选项代表满足特定条件的数据库实体
  2. 包含动态生成的表单的请求页面加载。
  3. 管理员在数据库中对表单中加载的某些实体进行更改,使其不再符合在表单中显示的条件(即停用、取消关联)
  4. 用户提交表单时选择了至少一个不再满足表单中显示标准的实体。

在这种情况下,提交表单的服务器端验证应该通过还是失败?

为用户提供了一个有效的表单,但由于用户在页面上时的管理员更改,发布的表单内容相对于数据库的当前状态不再有效......

如果它应该通过,我应该在页面加载时根据数据库的状态验证数据(利用数据库历史记录或使用会话)还是过度杀伤力,相反我可以验证发布的实体是否有效但没有一定符合当前的形式标准?

4

2 回答 2

0

如果您不更改数据库属性,它会更好。更改 db 属性将导致您的 Web 应用程序出错。尝试为管理员制作一个表单,其中表单的值是从数据库中获取和显示的。这样,管理员只会修改数据库中包含的值。通过使用此方法,您的数据库属性将保持不变。并尽量不要让管理员直接访问数据库。

于 2012-07-06T05:31:29.497 回答
0

处理应该类似于“丢失更新”问题的处理方式,因为这是一个丢失更新问题。两个人同时拿起一行编辑,谁的修改被持久化了,谁的修改丢失了?第一个人的更改被保留,第二个人被通知更新失败 - 这是标准方法。在这种情况下,管理员是第一个更新的人——尽管用户可能是第一个阅读的人。因此,验证失败并通知用户数据已过时并显示当前数据。

希望这可以帮助。

于 2012-07-28T02:54:29.520 回答