【问题标题】:Dynamic Form Validation Admin Conflict动态表单验证管理员冲突
【发布时间】:2012-07-06 03:37:13
【问题描述】:

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

考虑以下用例:

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

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

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

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

【问题讨论】:

    标签: forms validation dynamic


    【解决方案1】:

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

    【讨论】:

    • 我不确定我是否理解您的建议或它与我的问题的关系。如果我不清楚,我很抱歉。当我说管理员正在更改数据库属性时,我并不是说管理员正在更改表结构或架构,而是更改值和/或插入/更新行。
    • 我的主要问题是我应该如何处理包含陈旧数据的已发布表单?数据是陈旧的,因为管理员通过管理界面修改了数据库中的特定值,这些值用于显示用户已经加载并开始填写但尚未发布的动态表单。数据发布时,应视为有效还是无效?关于通常如何解决或避免这种情况的任何想法?
    【解决方案2】:

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多