web-dev-qa-db-ja.com

フォームのキャッシュを防ぐにはどうすればよいですか?

私はAJAXを使用するフォームを持っています。これは、一度に多くのユーザー、認証された匿名ユーザーも使用します。

ユーザー(特に匿名)間でのデータ漏洩を防ぐためにどのような予防策を講じる必要がありますか?

No_cacheオプションを使用して、ルートレベルのキャッシュを無効にしました。それで十分ですか、それとも\Drupal\Core\Form\FormStateInterface::disableCache()または他の何かを使用する必要がありますか?

4
user21641

ユーザー(特に匿名)間でのデータ漏洩を防ぐためにどのような予防策を講じる必要がありますか?

特別なことをする必要はありません。レンダーキャッシュも無効にしないでください。

フォームデータはキャッシュされるだけafter最初のajaxリクエストであり、それは特定のフォームビルドID(一意です)のみです。つまり、フォームが生成されてページキャッシュにキャッシュされる間、すべてのユーザーのすべてのリクエストに対する最初のリクエストによってフォームが最初から再構築されます。

8.x(8.0より前)のある時点でコアにバグがあり、UUIDを含む新しいユーザーエンティティが登録フォームにキャッシュされ、他のユーザーがUUIDの競合を抱えていたため、6時間ごとに1人のユーザーしか登録できませんでした。フォームキャッシュの変更により、これが修正されました。

2
Berdir