Go for it!

モーターサイクルと自転車とキャンプの日々。

特定のページでSSLを強制するsfSslRequirementPlugin

個人情報の表示・編集といった特定のページでSSLを強制したい場合、sfSslRequirementPluginを使うと便利。

sfSslRequirementPluginの1.x系はsymfony 1.0用のプラグインだったが2.x系からはsymfony 1.1に対応している。ここに書かれている他の機能もいくつかあるようですが自分は使っていないので、詳しいことはプラグインに同梱のREADMEを読んでくださいませ。

まずはインストール。

[code lang=‘python’] % php symfony plugin:install sfSslRequirementPlugin –release=2.0.0 [/code]

つぎにフィルタを追加。

apps/appname/config/filters.ymlに以下を追加する。プロトコルを判断してリダイレクトを行う関係上、追加位置は先頭行付近にする必要がある。

※たぶんrenderingの前じゃないとダメ。renderingが2回走ると同じVIEWが2個繋がってしまう。

[code lang=‘ruby’] sfSslRequirement: class: sfSslRequirementFilter [/code]

SSLを強制できる単位は以下の二つ。

  • アクション単位
  • モジュール単位

apps/appname/modules/modulename/config/security.ymlに以下のような内容を書く。allを指定するとモジュール全体、アクション名(indexActionなど)を書くとアクション単位での制御が可能になる。

[code lang=‘python’] all: require_ssl: true [/code]

設計勉強会のときにyandodさんが「SSLを使うページ、使わないページはモジュールを分離する」と言ってたことが記憶に残っていました。このプラグインを使う前提で初期設計をすると、グダグダになりがちなモジュール構成がシンプルになります。

[ad#text_wide]