2012-07-05 67 views
0

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

考虑以下用例:

  1. 用户请求一个网页含有其中一种形式提出选项表示符合一定条件的DB实体形式
  2. 包含动态生成的形式加载所请求的页面。
  3. 管理员对数据库进行了更改,使其不再满足要在表单中显示的条件(即,未激活,已取消关联)
  4. 用户使用至少一个实体提交表单选择不再符合要在表格中显示的标准。

在这种情况下,提交表单的服务器端验证是否合格?

向用户投放的有效形式,但张贴的形式的内容不再有效针对数据库的当前状态,由于管理的改变,而用户是在页面上...

是否应该通过,我应该加载页面(利用数据库历史记录或使用会话)与数据库状态验证数据或是过度杀伤,而是我可以验证已发布的实体是有效的,但不一定符合目前的形式标准?

回答

0

它更好,如果你不改变数据库属性。更改数据库属性会导致您的Web应用程序出现错误。尝试为管理员制作表单的值,并从数据库中显示该表单。通过这种方式,只有数据库中包含的值将被管理员修改。通过使用这种方法你的db属性将保持不变。并尽量不要让管理员直接访问数据库。

+0

我不确定我了解你的建议,或者它与我的问题有什么关系。如果我不清楚,我很抱歉。当我说管理员正在更改数据库属性时,我并不是说管理员正在更改表结构或模式,而是更改值和/或插入/更新行。 – ace25 2012-07-06 06:05:13

+0

我的主要问题是我应该如何处理包含陈旧数据的张贴表单?数据是陈旧的,因为管理员通过管理界面修改了数据库中的特定值,用于显示用户已经加载并开始填写但尚未发布的动态表单。数据发布时,是否应视为有效或无效?关于如何解决或避免这种情况的任何想法? – ace25 2012-07-06 06:12:52

0

治疗应该类似于如何处理“丢失的更新”问题,因为这是一个丢失的更新问题。两个人同时选择一行进行编辑,其变化持续存在并且其变化丢失了?第一个人的变化持续存在,第二个人被告知更新失败 - 是标准方法。在这种情况下,管理员是第一个更新的人 - 尽管用户可能是第一个阅读的人。因此,验证失败,并通知用户数据已过时并显示当前数据。

希望这会有所帮助。