TODO #18267

管理システムのコンテンツ管理よりフォルダーの追加を実施しようとすると「追加に失敗しました。」のエラーが発生

加藤 朗3ヶ月前に追加. 3ヶ月前に更新.

ステータス:終了開始日:
優先度:通常期日:
担当者:江頭 竜二進捗率:

100%

カテゴリ:管理画面全般
対象バージョン:4.0.6

説明

フォーラムにて問い合わせがございました。
http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=2951&forum=8

sessionをDBに保存するように設定
/app/Config/core.php

--------------
Configure::write('Session', array(
'defaults' => 'php'
));
--------------
↓
--------------
Configure::write('Session', array(
'defaults' => 'database'
));
--------------


DBにテーブル"*****_cake_sessions"を作成(****はプレフィックス)
構成は /app/Config/Schema/sessions.sql を参照

セッションをDBに登録するようにして
管理システムのコンテンツ管理よりフォルダーの追加を実施しようとすると「追加に失敗しました。」のエラーが発生しました。

[詳細なエラー内容]
-----------------
追加に失敗しました。
(400)
不正なリクエストと判断されました。(type:csrf)CSRF対策によるエラーです。リクエストに含まれるCSRFトークンが不正または無効である可能性があります。
Error:The request sent to the address '/*******/content_folders/add' was invalid.
-----------------
※アドレス****の部分はユニークとしております。
※発生するのは「ノーマルモード」時となり、「デバッグモード」時は発生致しません。


関係しているリビジョン

リビジョン 59be1bd6
江頭 竜二3ヶ月前に追加

fix #18267 セッションの保存先をデータベースとした場合に、コンテンツ管理でコンテンツが追加できない問題を改善

アセットファイルの再配置が必要

リビジョン 8fb225dc
江頭 竜二約1ヶ月前に追加

fix #18267 セッションをDBに保存する設定とした場合に、コンテンツの追加に失敗する問題を改善

リビジョン 73c942bc
江頭 竜二約1ヶ月前に追加

fix #18619 #18267 セッションの保存先を database に変更すると ajax 関連の処理が失敗する問題を改善

履歴

#1 江頭 竜二3ヶ月前に更新

  • カテゴリ管理画面全般 にセット
  • 担当者江頭 竜二 にセット
  • 対象バージョン4.0.6 にセット

#2 江頭 竜二3ヶ月前に更新

  • ステータス担当 から 解決 に変更
  • 進捗率0 から 100 に変更

更新履歴 basercms|commit:59be1bd6dbcf000154384aa77119f58191d4e377 で適用されました。

#3 江頭 竜二3ヶ月前に更新

Ajax でツリー一覧を取得する処理がPOSTとなっており、トークンの取得用のリクエストと並列処理となってしまい、セッション中のCSRFリストを上書きしあってしまっていた。
これにより、送信するトークンがCSRFリストに存在せず、エラーとなっていた。

セッションをファイルに保存する際は、何故か並列処理にはならず、CSRFリストの上書きあいはおこらず。

また、データベースにセッションを保存する場合でも、デバッガー等で処理をとめたりすると、リクエストの順番が順列となり、問題はおこらなかった。

今回は、ツリー取得処理をPOSTからGETに変更する事によっても、リクエストの順番が順列となる事を確認した為、こちらの変更で対応した。

#4 江頭 竜二3ヶ月前に更新

改善ファイルを反映する際は、ユーティリティより、アセットファイルの再配置処理が必要。

#5 江頭 竜二3ヶ月前に更新

  • ステータス解決 から 終了 に変更

他の形式にエクスポート: Atom PDF