管理者モジュールとユーザー モジュールを使用して、データベースに基づく Web アプリケーションを構築しています。管理者モジュールを使用すると、管理者はデータベースに保存されているエンティティのプロパティを変更できます。ユーザー モジュールは、データベースの状態に基づいて動的に生成されたフォームを提供します。
次の使用例を検討してください。
- ユーザーは、提示されたフォーム オプションが特定の基準を満たす DB エンティティを表すフォームを含む Web ページを要求します。
- 動的に生成されたフォームを含む要求されたページが読み込まれます。
- 管理者は、フォームにロードされた一部のエンティティに対して DB で変更を加え、フォームに表示される基準を満たさないようにします (つまり、非アクティブ化、関連付け解除)。
- ユーザーは、フォームに表示される基準を満たさなくなったエンティティを少なくとも 1 つ選択してフォームを送信します。
このシナリオでは、送信されたフォームのサーバー側の検証に合格する必要がありますか?
ユーザーには有効なフォームが提供されましたが、投稿されたフォームのコンテンツは、ユーザーがページにいる間に管理者が変更されたため、DB の現在の状態に関して有効ではなくなりました...
合格する必要がある場合は、ページが読み込まれたときのデータベースの状態に対してデータを検証する必要がありますか (データベース履歴を活用するか、セッションを使用するか)、それともやり過ぎですか?代わりに、投稿されたエンティティが有効であることを検証できますが、そうではありません必ずしも現在のフォーム基準を満たす必要がありますか?