
CakePHPのSSLコンポーネントでSSL対応
2013/05/09
先ごろからCakePHPでサイトを作っています。
WEBサイトで個人情報を扱う際に必要になってくるSSLですが、必要なページとそうでないページが混在するので、自動的に変わるようにできないかとgoogle先生に尋ねた所、SSL Componentなるものを発見。
必要ページのアクション単位で設定でき、必要なページにはhttps、必要ないページにはhttpにリダイレクトしてくれる素敵なコンポーネントです。
DLはこちらから。
plank/secured ? GitHub
では使い方。
DLしたssl.phpはコンポーネントなので、app/controllers/conponents/に設置。
app_controllerを編集。コンポーネントの宣言部分です。
[php]
var $components = array(
'Secured.Ssl' => array(
'secured' => array(
'entries' => 'login',
'payments' => '*',
'mypages' => array('index', 'edit')
),
'autoRedirect' => true, // Set to false to temporarily disable this component
)
'Session','Auth');
[/php]
上記の例では、entries_controller の login アクション、
payments_controller の全てのアクション、
mypages_conroller の、indexアクションとeditアクションに対して http でアクセスがあった場合に https://? に転送されます。
逆に、設定されていないアクションに対してアクセスがあった場合は http://? に転送されます。
8行目の autoRedirect をfalseにすると転送を無効にできます。
デフォルトでTRUEなので、設定しなくても構いません。
10行目は、SSLcomponentの他に使用するコンポーネントである Session Component とAuth Componentの宣言です。
GETでのパラメータは引き継がないようなのですが、CakePHPのSSL Componentでhttpとhttpsを切り替える - 降っても晴れても 様のサイトにてGETパラメータも引き継ぐようにするルーチンが公開されていますので、先にダウンロードしたssl.phpを書き換えましょう。
自動的に変わるので、この先は何もしなくてもよさそうです。いやー、便利。
ただ、作成しているローカル環境じゃSSLに対応していなので、SSLページに接続すると真っ白画面となりますので注意。
設定とか判定で振り分けできると思うのですが、誰か教えてください(^_^;)
[tgAmazonItemLookup asin="4798033146" related="1"]