Catalyst アプリ (Catalyst::Plugin::Session) のセッション プラグインの有効期限が切れるように構成すると、フラッシュ データが失われることがわかりました。具体的には、フラッシュ データが新しいリクエストで引き継がれなくなっていることがわかりました。
これは正常に聞こえますか?どうすればこれに対処できますか?
完全に正常です。セッションの要点は、あるリクエストのデータを別のリクエストのデータに関連付けることができることです。あるリクエストのセッションを期限切れにすると、そのリクエストのデータは将来のリクエストとは何の関係もないはずだと言っていることになります。
具体的には、フラッシュ データはセッション データの一部です。たとえば_save_flash
、ファイル内のメソッドを参照してください。メソッドの大きな警告Catalyst/Plugin/Session.pm
も参照してください。delete_session
注: この方法では、フラッシュ データも削除されます。
それに対処する方法は?セッション プラグイン以外のスキームを使用して、リクエストからのデータを永続化する必要があります。アプリ、保持しようとしているデータ、および古いセッションのデータを新しいリクエストに関連付ける方法について詳しく知らなければ、それ以上の具体的な推奨事項を作成することはできません.
たとえば、データベース バックエンドを使用してセッションを構成する場合はflash_to_stash
、オプションとして追加する必要があります。
<session>
dbi_dbh DB
dbi_table sessions
dbi_id_field id
dbi_data_field session_data
dbi_expires_field expires
flash_to_stash 1
expires 3600
</session>