Amon2::Lite + dotcloudな開発の今のところメモ
時間があるうちに、色々ためてたものを一気に作ってしまうのと、なるだけお金を使わない生活ということで只管コードを書いてます。
わりとハマりがちかなーと思える部分と、ちょっとゴージャスに作り込みをした部分を、自分用メモ兼ねて。
403ページを贅沢にする
ナビゲーションを入れたかったのでテコ入れ。
# load plugins __PACKAGE__->load_plugin('Web::CSRFDefender', { no_validate_hook => 1 }); __PACKAGE__->add_trigger( BEFORE_DISPATCH => sub { my $c = shift; if (not $c->validate_csrf()) { my $contents = $c->render('session_lost.html')->body; return $c->create_response( 403, [ 'Content-Type' => 'text/html', 'Content-Length' => length($contents), ], $contents ); } else { return; } } );
Amon2::Plugin::Web::CSRFDefenderにno_validate_hookを渡して、デフォルトで実行される403ページ生成部分を飛ばす。あとはapp.psgiに403ページ生成処理を差し込むだけ。
session storeを変える
Dotcloudのsessionが頻繁に切れてしまう場合の対応。
__PACKAGE__->enable_session( store => 'File' );
sessionが頻繁に切れてcsrf_tokenが常時空に近い状態になり、フォーム入力がままならなかったのが、これで緩和。