読者です 読者をやめる 読者になる 読者になる

C Sharpens you up

http://qiita.com/yuba に移しつつあります

Play2.0 - secureクッキーは設定でオンにしておきたいけど開発機ではオフにしたい場合

Play! 2.x

secureクッキーは、HTTPSを使っていない場合にはブラウザからサーバに送り返されないフラグを付けたクッキーのことです。
秘密情報をクッキーに乗せて覚えさせたのに、うっかりさんユーザーがHTTPでアクセスしてきてクッキー内容がパケット盗聴で漏れるとかもうダメダメパターンですからね。

Play! frameworkでHTTPSを使うサイトなら、application.confに

session.secure=true

の一行を加えて、セッション情報を格納するクッキーには必ずsecureフラグが付くようにしてあげましょう。

ところが問題が。
この設定があると、HTTPではログインとかまったくできなくなります。開発機の開発サーバでも。デバッグできないじゃない。

開発機だけapplication.confを入れ替えるとかそういうのはソース管理が単に面倒になるので避けたいですね。
でも簡単、開発サーバの起動オプションでsession.secure=falseを与えれば設定は上書きできるのです。

その起動オプションの与え方。

$ play "run -Dsession.secure=false"

このダブルクオーテーションがコツです。これがないとrunというコマンドと-Dsession.secure=falseというコマンド(そんなものはない)を並べただけということになってしまうので。

Windows, UNIX系どちらのシェルでも同様です。

ダブルクオーテーションが必要なことはこちらの記事で教えてもらいました。